diff --git a/app/Http/Controllers/VehicleController.php b/app/Http/Controllers/VehicleController.php index 1dfce34..d8bb9e8 100644 --- a/app/Http/Controllers/VehicleController.php +++ b/app/Http/Controllers/VehicleController.php @@ -86,4 +86,20 @@ class VehicleController extends Controller { // } + + public function autocomplete(Request $request): JsonResponse + { + $games = ''; + if ($request->has('q')) { + $search = $request->q; + $games = Vehicle::select(['vehicle_name']) + ->where(function ($query) use ($search) { + $query->where('name', 'LIKE', "%$search%") + ->orWhere('appID', 'LIKE', "%$search%"); + }) + ->get(); + } + + return response()->json($games); + } } diff --git a/package-lock.json b/package-lock.json index d63bce0..4f3b74b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "website", + "name": "fleetCatalogue", "lockfileVersion": 3, "requires": true, "packages": { diff --git a/public/css/app.css b/public/css/app.css index ec17361..7429a17 100644 --- a/public/css/app.css +++ b/public/css/app.css @@ -1,5 +1,5 @@ /*! - * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2023 Fonticons, Inc. */ @@ -8228,7 +8228,7 @@ readers do not read off random characters that represent icons */ } /*! - * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2023 Fonticons, Inc. */ @@ -8242,7 +8242,7 @@ readers do not read off random characters that represent icons */ font-style: normal; font-weight: 400; font-display: block; - src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.woff2?3223dc79c1adee56370b19dca985aa17) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.ttf?d87474231f419288480274125e0e9767) format("truetype"); + src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.woff2?b041b1fa4fe241b234458a565482c4c6) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.ttf?50701fbb8177c2dde530fc83add388ef) format("truetype"); } .far, .fa-regular { @@ -8250,7 +8250,7 @@ readers do not read off random characters that represent icons */ } /*! - * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2023 Fonticons, Inc. */ @@ -8264,7 +8264,7 @@ readers do not read off random characters that represent icons */ font-style: normal; font-weight: 900; font-display: block; - src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.woff2?bb975c966c37455a1bc3c7e29971386c) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.ttf?4a2cd718d7031b732e7610fba99ecf74) format("truetype"); + src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.woff2?b6879d41b0852f01ed5b0216c4c72e11) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.ttf?d75e3fd1eb12e9bd66550e304bdd1ec7) format("truetype"); } .fas, .fa-solid { @@ -8272,7 +8272,7 @@ readers do not read off random characters that represent icons */ } /*! - * Font Awesome Free 6.4.0 by @fontawesome - https://fontawesome.com + * Font Awesome Free 6.4.2 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) * Copyright 2023 Fonticons, Inc. */ @@ -8286,7 +8286,7 @@ readers do not read off random characters that represent icons */ font-style: normal; font-weight: 400; font-display: block; - src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.woff2?e033a13ee751afc1860c3bc31ede1065) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.ttf?150de8eaa454d669c405d810c8dbbf14) format("truetype"); + src: url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.woff2?878f31251d960bd6266f20ccdc4d738f) format("woff2"), url(/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.ttf?016b4a6cdced82ab3aa1907e3855cfd2) format("truetype"); } .fab, .fa-brands { @@ -8513,6 +8513,10 @@ readers do not read off random characters that represent icons */ content: "\f282"; } +.fa-threads:before { + content: "\e618"; +} + .fa-napster:before { content: "\f3d2"; } @@ -8737,6 +8741,10 @@ readers do not read off random characters that represent icons */ content: "\f28a"; } +.fa-debian:before { + content: "\e60b"; +} + .fa-openid:before { content: "\f19b"; } @@ -9057,6 +9065,10 @@ readers do not read off random characters that represent icons */ content: "\f612"; } +.fa-square-threads:before { + content: "\e619"; +} + .fa-hackerrank:before { content: "\f5f7"; } @@ -9513,6 +9525,10 @@ readers do not read off random characters that represent icons */ content: "\f39d"; } +.fa-x-twitter:before { + content: "\e61b"; +} + .fa-cotton-bureau:before { content: "\f89e"; } @@ -10173,6 +10189,10 @@ readers do not read off random characters that represent icons */ content: "\f2c4"; } +.fa-square-x-twitter:before { + content: "\e61a"; +} + .fa-reacteurope:before { content: "\f75d"; } @@ -10956,7 +10976,7 @@ readers do not read off random characters that represent icons */ border-color: rgb(63 63 70 / var(--tw-bg-opacity)) } /* -! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com +! tailwindcss v3.3.3 | MIT License | https://tailwindcss.com */ /* @@ -11126,6 +11146,8 @@ optgroup, select, textarea { font-family: inherit; /* 1 */ + font-feature-settings: inherit; /* 1 */ + font-variation-settings: inherit; /* 1 */ font-size: 100%; /* 1 */ font-weight: inherit; /* 1 */ line-height: inherit; /* 1 */ @@ -11263,6 +11285,14 @@ menu { padding: 0; } +/* +Reset default styling for dialogs. +*/ + +dialog { + padding: 0; +} + /* Prevent resizing textareas horizontally by default. */ @@ -11338,7 +11368,7 @@ video { display: none; } -[type='text'],[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select{ +[type='text'],input:where(:not([type])),[type='email'],[type='url'],[type='password'],[type='number'],[type='date'],[type='datetime-local'],[type='month'],[type='search'],[type='tel'],[type='time'],[type='week'],[multiple],textarea,select{ -webkit-appearance: none; -moz-appearance: none; appearance: none; @@ -11355,7 +11385,7 @@ video { --tw-shadow: 0 0 #0000; } -[type='text']:focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus{ +[type='text']:focus, input:where(:not([type])):focus, [type='email']:focus, [type='url']:focus, [type='password']:focus, [type='number']:focus, [type='date']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='week']:focus, [multiple]:focus, textarea:focus, select:focus{ outline: 2px solid transparent; outline-offset: 2px; --tw-ring-inset: var(--tw-empty,/*!*/ /*!*/); @@ -11384,6 +11414,11 @@ input::placeholder,textarea::placeholder{ ::-webkit-date-and-time-value{ min-height: 1.5em; + text-align: inherit; +} + +::-webkit-datetime-edit{ + display: inline-flex; } ::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{ @@ -11401,7 +11436,7 @@ select{ print-color-adjust: exact; } -[multiple]{ +[multiple],[size]:where(select:not([size="1"])){ background-image: initial; background-position: initial; background-repeat: unset; @@ -13301,18 +13336,6 @@ html{ .select[multiple]{ height: auto; } -.stats{ - display: inline-grid; - --tw-bg-opacity: 1; - background-color: hsl(var(--b1) / var(--tw-bg-opacity)); - --tw-text-opacity: 1; - color: hsl(var(--bc) / var(--tw-text-opacity)); - border-radius: var(--rounded-box, 1rem); -} -:where(.stats){ - grid-auto-flow: column; - overflow-x: auto; -} .tab{ position: relative; display: inline-flex; @@ -13586,13 +13609,6 @@ html{ outline: 2px solid hsla(var(--bc) / 0.2); outline-offset: 2px; } -.input-error{ - --tw-border-opacity: 1; - border-color: hsl(var(--er) / var(--tw-border-opacity)); -} -.input-error:focus{ - outline: 2px solid hsl(var(--er)); -} .input-disabled, .input[disabled]{ cursor: not-allowed; @@ -13872,14 +13888,6 @@ html{ [dir="rtl"] .select{ background-position: calc(0% + 12px) calc(1px + 50%), calc(0% + 16px) calc(1px + 50%); } -:where(.stats) > :not([hidden]) ~ :not([hidden]){ - --tw-divide-x-reverse: 0; - border-right-width: calc(1px * var(--tw-divide-x-reverse)); - border-left-width: calc(1px * calc(1 - var(--tw-divide-x-reverse))); - --tw-divide-y-reverse: 0; - border-top-width: calc(0px * calc(1 - var(--tw-divide-y-reverse))); - border-bottom-width: calc(0px * var(--tw-divide-y-reverse)); -} .tab:hover{ --tw-text-opacity: 1; } @@ -14093,9 +14101,6 @@ html{ white-space: nowrap; border-width: 0; } -.visible{ - visibility: visible; -} .fixed{ position: fixed; } @@ -14140,22 +14145,18 @@ html{ margin-left: 0.5rem; margin-right: 0.5rem; } -.mx-8{ - margin-left: 2rem; - margin-right: 2rem; -} .mx-auto{ margin-left: auto; margin-right: auto; } +.my-1{ + margin-top: 0.25rem; + margin-bottom: 0.25rem; +} .my-3{ margin-top: 0.75rem; margin-bottom: 0.75rem; } -.my-5{ - margin-top: 1.25rem; - margin-bottom: 1.25rem; -} .my-\[1rem\]{ margin-top: 1rem; margin-bottom: 1rem; @@ -14164,25 +14165,15 @@ html{ margin-top: auto; margin-bottom: auto; } -.my-1{ - margin-top: 0.25rem; - margin-bottom: 0.25rem; -} .-mb-\[6\.5rem\]{ margin-bottom: -6.5rem; } .-ml-px{ margin-left: -1px; } -.-mt-px{ - margin-top: -1px; -} .mb-0{ margin-bottom: 0px; } -.mb-1{ - margin-bottom: 0.25rem; -} .mb-2{ margin-bottom: 0.5rem; } @@ -14201,39 +14192,45 @@ html{ .mb-8{ margin-bottom: 2rem; } -.ml-1{ - margin-left: 0.25rem; -} -.ml-12{ - margin-left: 3rem; -} .ml-2{ margin-left: 0.5rem; } .ml-3{ margin-left: 0.75rem; } -.ml-4{ +.ml-\[1rem\]{ margin-left: 1rem; } +.ml-\[2\.5rem\]{ + margin-left: 2.5rem; +} +.ml-\[4\.25rem\]{ + margin-left: 4.25rem; +} .ml-\[4rem\]{ margin-left: 4rem; } -.mr-1{ - margin-right: 0.25rem; -} .mr-2{ margin-right: 0.5rem; } .mr-3{ margin-right: 0.75rem; } -.mr-4{ - margin-right: 1rem; -} .mr-\[\.5rem\]{ margin-right: .5rem; } +.mr-\[13\.5rem\]{ + margin-right: 13.5rem; +} +.mr-\[2\.74rem\]{ + margin-right: 2.74rem; +} +.mr-\[2\.75rem\]{ + margin-right: 2.75rem; +} +.mr-\[3\.25rem\]{ + margin-right: 3.25rem; +} .mt-1{ margin-top: 0.25rem; } @@ -14249,123 +14246,6 @@ html{ .mt-8{ margin-top: 2rem; } -.ml-\[3rem\]{ - margin-left: 3rem; -} -.ml-\[2\.5rem\]{ - margin-left: 2.5rem; -} -.ml-\[2rem\]{ - margin-left: 2rem; -} -.ml-\[1rem\]{ - margin-left: 1rem; -} -.mr-\[1rem\]{ - margin-right: 1rem; -} -.mr-\[2rem\]{ - margin-right: 2rem; -} -.mr-\[2\.3rem\]{ - margin-right: 2.3rem; -} -.mr-\[2\.5rem\]{ - margin-right: 2.5rem; -} -.mr-\[2\.6rem\]{ - margin-right: 2.6rem; -} -.ml-\[1\.5rem\]{ - margin-left: 1.5rem; -} -.mr-\[23rem\]{ - margin-right: 23rem; -} -.mr-\[3rem\]{ - margin-right: 3rem; -} -.mr-\[2\.8rem\]{ - margin-right: 2.8rem; -} -.mr-\[2\.7rem\]{ - margin-right: 2.7rem; -} -.mr-\[9\.7rem\]{ - margin-right: 9.7rem; -} -.mr-\[12\.7rem\]{ - margin-right: 12.7rem; -} -.mr-\[11\.7rem\]{ - margin-right: 11.7rem; -} -.mr-\[12rem\]{ - margin-right: 12rem; -} -.mr-\[7rem\]{ - margin-right: 7rem; -} -.mr-\[3\.5rem\]{ - margin-right: 3.5rem; -} -.mr-\[5rem\]{ - margin-right: 5rem; -} -.mr-\[4rem\]{ - margin-right: 4rem; -} -.mr-\[4\.2rem\]{ - margin-right: 4.2rem; -} -.mr-\[2\.4rem\]{ - margin-right: 2.4rem; -} -.mr-\[3\.7rem\]{ - margin-right: 3.7rem; -} -.mr-\[2\.9rem\]{ - margin-right: 2.9rem; -} -.mr-\[3\.8rem\]{ - margin-right: 3.8rem; -} -.ml-\[3\.5rem\]{ - margin-left: 3.5rem; -} -.ml-\[3\.6rem\]{ - margin-left: 3.6rem; -} -.ml-\[3\.7rem\]{ - margin-left: 3.7rem; -} -.ml-\[3\.75rem\]{ - margin-left: 3.75rem; -} -.mr-\[2\.75rem\]{ - margin-right: 2.75rem; -} -.mr-\[2\.74rem\]{ - margin-right: 2.74rem; -} -.ml-\[2\.6rem\]{ - margin-left: 2.6rem; -} -.ml-\[4\.25rem\]{ - margin-left: 4.25rem; -} -.mr-\[3\.25rem\]{ - margin-right: 3.25rem; -} -.mr-\[13rem\]{ - margin-right: 13rem; -} -.mr-\[14rem\]{ - margin-right: 14rem; -} -.mr-\[13\.5rem\]{ - margin-right: 13.5rem; -} .block{ display: block; } @@ -14384,33 +14264,15 @@ html{ .hidden{ display: none; } -.h-12{ - height: 3rem; -} .h-14{ height: 3.5rem; } -.h-16{ - height: 4rem; -} -.h-4{ - height: 1rem; -} .h-5{ height: 1.25rem; } -.h-6{ - height: 1.5rem; -} -.h-7{ - height: 1.75rem; -} .h-8{ height: 2rem; } -.h-\[220px\]{ - height: 220px; -} .h-\[2rem\]{ height: 2rem; } @@ -14453,21 +14315,6 @@ html{ .max-h-\[90vh\]{ max-height: 90vh; } -.min-h-\[15rem\]{ - min-height: 15rem; -} -.min-h-\[25rem\]{ - min-height: 25rem; -} -.min-h-\[30rem\]{ - min-height: 30rem; -} -.min-h-\[4\.5rem\]{ - min-height: 4.5rem; -} -.min-h-\[40\.2rem\]{ - min-height: 40.2rem; -} .min-h-\[40rem\]{ min-height: 40rem; } @@ -14477,9 +14324,6 @@ html{ .min-h-screen{ min-height: 100vh; } -.w-1\/5{ - width: 20%; -} .w-14{ width: 3.5rem; } @@ -14495,18 +14339,18 @@ html{ .w-60{ width: 15rem; } -.w-8{ - width: 2rem; -} -.w-\[1\.5rem\]{ - width: 1.5rem; -} .w-\[11rem\]{ width: 11rem; } .w-\[13rem\]{ width: 13rem; } +.w-\[17\.2rem\]{ + width: 17.2rem; +} +.w-\[2\.5rem\]{ + width: 2.5rem; +} .w-\[20rem\]{ width: 20rem; } @@ -14516,92 +14360,26 @@ html{ .w-\[23rem\]{ width: 23rem; } -.w-\[560px\]{ - width: 560px; -} -.w-auto{ - width: auto; -} -.w-full{ - width: 100%; -} -.w-\[4rem\]{ - width: 4rem; -} -.w-\[6rem\]{ - width: 6rem; -} -.w-\[5rem\]{ - width: 5rem; -} -.w-\[2\.5rem\]{ - width: 2.5rem; -} -.w-\[3rem\]{ - width: 3rem; +.w-\[3\.2rem\]{ + width: 3.2rem; } .w-\[3\.5rem\]{ width: 3.5rem; } +.w-\[3rem\]{ + width: 3rem; +} .w-\[4\.2rem\]{ width: 4.2rem; } -.w-\[6\.2rem\]{ - width: 6.2rem; -} -.w-\[7\.2rem\]{ - width: 7.2rem; -} -.w-\[7rem\]{ - width: 7rem; -} -.w-\[6\.9rem\]{ - width: 6.9rem; -} -.w-\[10rem\]{ - width: 10rem; -} -.w-\[16rem\]{ - width: 16rem; -} -.w-\[6\.4rem\]{ - width: 6.4rem; -} -.w-\[3\.2rem\]{ - width: 3.2rem; -} -.w-\[3\.7rem\]{ - width: 3.7rem; -} -.w-\[18rem\]{ - width: 18rem; -} -.w-\[17rem\]{ - width: 17rem; -} -.w-\[17\.2rem\]{ - width: 17.2rem; -} -.w-\[17\.1rem\]{ - width: 17.1rem; -} -.w-\[6\.5rem\]{ - width: 6.5rem; -} .w-\[5\.2rem\]{ width: 5.2rem; } -.w-\[2\.75rem\]{ - width: 2.75rem; +.w-\[6\.5rem\]{ + width: 6.5rem; } -.min-w-\[1\.5rem\]{ - min-width: 1.5rem; -} -.min-w-\[10rem\]{ - min-width: 10rem; -} -.min-w-\[20rem\]{ - min-width: 20rem; +.w-full{ + width: 100%; } .min-w-\[6rem\]{ min-width: 6rem; @@ -14616,21 +14394,12 @@ html{ min-width: -moz-max-content; min-width: max-content; } -.max-w-6xl{ - max-width: 72rem; -} .max-w-7xl{ max-width: 80rem; } -.max-w-\[25rem\]{ - max-width: 25rem; -} .max-w-\[2rem\]{ max-width: 2rem; } -.max-w-\[32rem\]{ - max-width: 32rem; -} .max-w-\[40rem\]{ max-width: 40rem; } @@ -14653,9 +14422,6 @@ html{ .flex-1{ flex: 1 1 0%; } -.flex-shrink-0{ - flex-shrink: 0; -} .grow{ flex-grow: 1; } @@ -14698,9 +14464,6 @@ html{ .cursor-pointer{ cursor: pointer; } -.grid-cols-1{ - grid-template-columns: repeat(1, minmax(0, 1fr)); -} .grid-cols-2{ grid-template-columns: repeat(2, minmax(0, 1fr)); } @@ -14805,18 +14568,12 @@ html{ .overflow-y-hidden{ overflow-y: hidden; } -.whitespace-nowrap{ - white-space: nowrap; -} .rounded{ border-radius: 0.25rem; } .rounded-\[1rem\]{ border-radius: 1rem; } -.rounded-full{ - border-radius: 9999px; -} .rounded-lg{ border-radius: 0.5rem; } @@ -14856,10 +14613,6 @@ html{ border-top-right-radius: 0px; border-bottom-right-radius: 0px; } -.rounded-t-\[1rem\]{ - border-top-left-radius: 1rem; - border-top-right-radius: 1rem; -} .border{ border-width: 1px; } @@ -14869,9 +14622,6 @@ html{ .border-b-2{ border-bottom-width: 2px; } -.border-b-4{ - border-bottom-width: 4px; -} .border-l{ border-left-width: 1px; } @@ -14884,29 +14634,14 @@ html{ .border-t{ border-top-width: 1px; } -.border-none{ - border-style: none; -} -.border-gray-200{ - --tw-border-opacity: 1; - border-color: rgb(229 231 235 / var(--tw-border-opacity)); -} .border-gray-300{ --tw-border-opacity: 1; border-color: rgb(209 213 219 / var(--tw-border-opacity)); } -.border-gray-400{ - --tw-border-opacity: 1; - border-color: rgb(156 163 175 / var(--tw-border-opacity)); -} .border-indigo-400{ --tw-border-opacity: 1; border-color: rgb(129 140 248 / var(--tw-border-opacity)); } -.border-red-400{ - --tw-border-opacity: 1; - border-color: rgb(248 113 113 / var(--tw-border-opacity)); -} .border-transparent{ border-color: transparent; } @@ -14914,13 +14649,13 @@ html{ --tw-border-opacity: 1; border-color: rgb(8 145 178 / var(--tw-border-opacity)); } +.border-red-400{ + --tw-border-opacity: 1; + border-color: rgb(248 113 113 / var(--tw-border-opacity)); +} .border-opacity-40{ --tw-border-opacity: 0.4; } -.bg-gray-100{ - --tw-bg-opacity: 1; - background-color: rgb(243 244 246 / var(--tw-bg-opacity)); -} .bg-gray-500{ --tw-bg-opacity: 1; background-color: rgb(107 114 128 / var(--tw-bg-opacity)); @@ -14952,17 +14687,14 @@ html{ --tw-bg-opacity: 1; background-color: rgb(39 39 42 / var(--tw-bg-opacity)); } +.bg-cyan-600{ + --tw-bg-opacity: 1; + background-color: rgb(8 145 178 / var(--tw-bg-opacity)); +} .bg-red-400{ --tw-bg-opacity: 1; background-color: rgb(248 113 113 / var(--tw-bg-opacity)); } -.fill-red-400{ - fill: #f87171; -} -.object-cover{ - -o-object-fit: cover; - object-fit: cover; -} .p-2{ padding: 0.5rem; } @@ -14995,10 +14727,6 @@ html{ padding-left: 1.25rem; padding-right: 1.25rem; } -.px-6{ - padding-left: 1.5rem; - padding-right: 1.5rem; -} .px-8{ padding-left: 2rem; padding-right: 2rem; @@ -15023,68 +14751,13 @@ html{ padding-top: 0.75rem; padding-bottom: 0.75rem; } -.py-4{ - padding-top: 1rem; - padding-bottom: 1rem; -} .py-6{ padding-top: 1.5rem; padding-bottom: 1.5rem; } -.py-\[2rem\]{ - padding-top: 2rem; - padding-bottom: 2rem; -} -.px-\[2rem\]{ - padding-left: 2rem; - padding-right: 2rem; -} -.px-\[4rem\]{ - padding-left: 4rem; - padding-right: 4rem; -} -.px-\[1rem\]{ - padding-left: 1rem; - padding-right: 1rem; -} -.px-\[4\.1rem\]{ - padding-left: 4.1rem; - padding-right: 4.1rem; -} -.px-\[4\.3rem\]{ - padding-left: 4.3rem; - padding-right: 4.3rem; -} -.px-\[4\.2rem\]{ - padding-left: 4.2rem; - padding-right: 4.2rem; -} -.px-\[3rem\]{ - padding-left: 3rem; - padding-right: 3rem; -} -.px-\[2\.5rem\]{ - padding-left: 2.5rem; - padding-right: 2.5rem; -} -.px-\[2\.2rem\]{ - padding-left: 2.2rem; - padding-right: 2.2rem; -} -.px-\[2\.3rem\]{ - padding-left: 2.3rem; - padding-right: 2.3rem; -} -.px-\[2\.4rem\]{ - padding-left: 2.4rem; - padding-right: 2.4rem; -} .pb-4{ padding-bottom: 1rem; } -.pb-6{ - padding-bottom: 1.5rem; -} .pl-3{ padding-left: 0.75rem; } @@ -15097,9 +14770,6 @@ html{ .pt-2{ padding-top: 0.5rem; } -.pt-8{ - padding-top: 2rem; -} .text-left{ text-align: left; } @@ -15112,10 +14782,6 @@ html{ .align-middle{ vertical-align: middle; } -.text-2xl{ - font-size: 1.5rem; - line-height: 2rem; -} .text-3xl{ font-size: 1.875rem; line-height: 2.25rem; @@ -15136,10 +14802,6 @@ html{ font-size: 0.875rem; line-height: 1.25rem; } -.text-xl{ - font-size: 1.25rem; - line-height: 1.75rem; -} .text-xs{ font-size: 0.75rem; line-height: 1rem; @@ -15168,12 +14830,6 @@ html{ .leading-5{ line-height: 1.25rem; } -.leading-7{ - line-height: 1.75rem; -} -.tracking-wider{ - letter-spacing: 0.05em; -} .tracking-widest{ letter-spacing: 0.1em; } @@ -15181,10 +14837,6 @@ html{ --tw-text-opacity: 1; color: rgb(229 231 235 / var(--tw-text-opacity)); } -.text-gray-300{ - --tw-text-opacity: 1; - color: rgb(209 213 219 / var(--tw-text-opacity)); -} .text-gray-400{ --tw-text-opacity: 1; color: rgb(156 163 175 / var(--tw-text-opacity)); @@ -15221,10 +14873,6 @@ html{ --tw-text-opacity: 1; color: rgb(254 202 202 / var(--tw-text-opacity)); } -.text-red-400{ - --tw-text-opacity: 1; - color: rgb(248 113 113 / var(--tw-text-opacity)); -} .text-red-600{ --tw-text-opacity: 1; color: rgb(220 38 38 / var(--tw-text-opacity)); @@ -15241,6 +14889,10 @@ html{ --tw-text-opacity: 1; color: rgb(8 145 178 / var(--tw-text-opacity)); } +.text-red-400{ + --tw-text-opacity: 1; + color: rgb(248 113 113 / var(--tw-text-opacity)); +} .underline{ text-decoration-line: underline; } @@ -15321,11 +14973,6 @@ html{ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); transition-duration: 150ms; } -.transition-colors{ - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} .duration-150{ transition-duration: 150ms; } @@ -15391,6 +15038,9 @@ html{ .scrollbar-track-zinc-700{ --scrollbar-track: #3f3f46 !important; } +.scrollbar-thumb-cyan-600{ + --scrollbar-thumb: #0891b2 !important; +} .scrollbar-thumb-red-400{ --scrollbar-thumb: #f87171 !important; } @@ -15434,10 +15084,6 @@ html{ --tw-bg-opacity: 1; background-color: rgb(153 27 27 / var(--tw-bg-opacity)); } -.hover\:bg-zinc-600:hover{ - --tw-bg-opacity: 1; - background-color: rgb(82 82 91 / var(--tw-bg-opacity)); -} .hover\:bg-zinc-700:hover{ --tw-bg-opacity: 1; background-color: rgb(63 63 70 / var(--tw-bg-opacity)); @@ -15466,10 +15112,6 @@ html{ --tw-text-opacity: 1; color: rgb(17 24 39 / var(--tw-text-opacity)); } -.hover\:text-red-400:hover{ - --tw-text-opacity: 1; - color: rgb(248 113 113 / var(--tw-text-opacity)); -} .hover\:underline:hover{ text-decoration-line: underline; } @@ -15594,10 +15236,6 @@ html{ --tw-text-opacity: 1; color: rgb(55 65 81 / var(--tw-text-opacity)); } -.active\:text-red-400:active{ - --tw-text-opacity: 1; - color: rgb(248 113 113 / var(--tw-text-opacity)); -} .active\:text-zinc-700:active{ --tw-text-opacity: 1; color: rgb(63 63 70 / var(--tw-text-opacity)); @@ -15607,11 +15245,6 @@ html{ } @media (prefers-color-scheme: dark){ - .dark\:bg-gray-900{ - --tw-bg-opacity: 1; - background-color: rgb(17 24 39 / var(--tw-bg-opacity)); - } - .dark\:text-gray-400{ --tw-text-opacity: 1; color: rgb(156 163 175 / var(--tw-text-opacity)); @@ -15698,10 +15331,6 @@ html{ align-items: center; } - .sm\:justify-start{ - justify-content: flex-start; - } - .sm\:justify-between{ justify-content: space-between; } @@ -15723,10 +15352,6 @@ html{ padding-left: 1.5rem; padding-right: 1.5rem; } - - .sm\:pt-0{ - padding-top: 0px; - } } @media (min-width: 768px){ diff --git a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.ttf b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.ttf index 774d51a..30f55b7 100644 Binary files a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.ttf and b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.ttf differ diff --git a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.woff2 b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.woff2 index 71e3185..8a480d9 100644 Binary files a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.woff2 and b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-brands-400.woff2 differ diff --git a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.ttf b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.ttf index 8a9d634..c79589d 100644 Binary files a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.ttf and b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.ttf differ diff --git a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.woff2 b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.woff2 index 7f02168..059a94e 100644 Binary files a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.woff2 and b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-regular-400.woff2 differ diff --git a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.ttf b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.ttf index 993dbe1..e479fb2 100644 Binary files a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.ttf and b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.ttf differ diff --git a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.woff2 b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.woff2 index 5c16cd3..88b0367 100644 Binary files a/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.woff2 and b/public/fonts/vendor/@fortawesome/fontawesome-free/webfa-solid-900.woff2 differ diff --git a/public/js/app.js b/public/js/app.js index d86c237..9b57d9b 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -1,1532 +1,6 @@ /******/ (() => { // webpackBootstrap /******/ var __webpack_modules__ = ({ -/***/ "./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ ITERATE_KEY: () => (/* binding */ ITERATE_KEY), -/* harmony export */ computed: () => (/* binding */ computed), -/* harmony export */ customRef: () => (/* binding */ customRef), -/* harmony export */ effect: () => (/* binding */ effect), -/* harmony export */ enableTracking: () => (/* binding */ enableTracking), -/* harmony export */ isProxy: () => (/* binding */ isProxy), -/* harmony export */ isReactive: () => (/* binding */ isReactive), -/* harmony export */ isReadonly: () => (/* binding */ isReadonly), -/* harmony export */ isRef: () => (/* binding */ isRef), -/* harmony export */ markRaw: () => (/* binding */ markRaw), -/* harmony export */ pauseTracking: () => (/* binding */ pauseTracking), -/* harmony export */ proxyRefs: () => (/* binding */ proxyRefs), -/* harmony export */ reactive: () => (/* binding */ reactive), -/* harmony export */ readonly: () => (/* binding */ readonly), -/* harmony export */ ref: () => (/* binding */ ref), -/* harmony export */ resetTracking: () => (/* binding */ resetTracking), -/* harmony export */ shallowReactive: () => (/* binding */ shallowReactive), -/* harmony export */ shallowReadonly: () => (/* binding */ shallowReadonly), -/* harmony export */ shallowRef: () => (/* binding */ shallowRef), -/* harmony export */ stop: () => (/* binding */ stop), -/* harmony export */ toRaw: () => (/* binding */ toRaw), -/* harmony export */ toRef: () => (/* binding */ toRef), -/* harmony export */ toRefs: () => (/* binding */ toRefs), -/* harmony export */ track: () => (/* binding */ track), -/* harmony export */ trigger: () => (/* binding */ trigger), -/* harmony export */ triggerRef: () => (/* binding */ triggerRef), -/* harmony export */ unref: () => (/* binding */ unref) -/* harmony export */ }); -/* harmony import */ var _vue_shared__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vue/shared */ "./node_modules/@vue/shared/dist/shared.esm-bundler.js"); - - -const targetMap = new WeakMap(); -const effectStack = []; -let activeEffect; -const ITERATE_KEY = Symbol(( true) ? 'iterate' : 0); -const MAP_KEY_ITERATE_KEY = Symbol(( true) ? 'Map key iterate' : 0); -function isEffect(fn) { - return fn && fn._isEffect === true; -} -function effect(fn, options = _vue_shared__WEBPACK_IMPORTED_MODULE_0__.EMPTY_OBJ) { - if (isEffect(fn)) { - fn = fn.raw; - } - const effect = createReactiveEffect(fn, options); - if (!options.lazy) { - effect(); - } - return effect; -} -function stop(effect) { - if (effect.active) { - cleanup(effect); - if (effect.options.onStop) { - effect.options.onStop(); - } - effect.active = false; - } -} -let uid = 0; -function createReactiveEffect(fn, options) { - const effect = function reactiveEffect() { - if (!effect.active) { - return fn(); - } - if (!effectStack.includes(effect)) { - cleanup(effect); - try { - enableTracking(); - effectStack.push(effect); - activeEffect = effect; - return fn(); - } - finally { - effectStack.pop(); - resetTracking(); - activeEffect = effectStack[effectStack.length - 1]; - } - } - }; - effect.id = uid++; - effect.allowRecurse = !!options.allowRecurse; - effect._isEffect = true; - effect.active = true; - effect.raw = fn; - effect.deps = []; - effect.options = options; - return effect; -} -function cleanup(effect) { - const { deps } = effect; - if (deps.length) { - for (let i = 0; i < deps.length; i++) { - deps[i].delete(effect); - } - deps.length = 0; - } -} -let shouldTrack = true; -const trackStack = []; -function pauseTracking() { - trackStack.push(shouldTrack); - shouldTrack = false; -} -function enableTracking() { - trackStack.push(shouldTrack); - shouldTrack = true; -} -function resetTracking() { - const last = trackStack.pop(); - shouldTrack = last === undefined ? true : last; -} -function track(target, type, key) { - if (!shouldTrack || activeEffect === undefined) { - return; - } - let depsMap = targetMap.get(target); - if (!depsMap) { - targetMap.set(target, (depsMap = new Map())); - } - let dep = depsMap.get(key); - if (!dep) { - depsMap.set(key, (dep = new Set())); - } - if (!dep.has(activeEffect)) { - dep.add(activeEffect); - activeEffect.deps.push(dep); - if (( true) && activeEffect.options.onTrack) { - activeEffect.options.onTrack({ - effect: activeEffect, - target, - type, - key - }); - } - } -} -function trigger(target, type, key, newValue, oldValue, oldTarget) { - const depsMap = targetMap.get(target); - if (!depsMap) { - // never been tracked - return; - } - const effects = new Set(); - const add = (effectsToAdd) => { - if (effectsToAdd) { - effectsToAdd.forEach(effect => { - if (effect !== activeEffect || effect.allowRecurse) { - effects.add(effect); - } - }); - } - }; - if (type === "clear" /* CLEAR */) { - // collection being cleared - // trigger all effects for target - depsMap.forEach(add); - } - else if (key === 'length' && (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isArray)(target)) { - depsMap.forEach((dep, key) => { - if (key === 'length' || key >= newValue) { - add(dep); - } - }); - } - else { - // schedule runs for SET | ADD | DELETE - if (key !== void 0) { - add(depsMap.get(key)); - } - // also run for iteration key on ADD | DELETE | Map.SET - switch (type) { - case "add" /* ADD */: - if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isArray)(target)) { - add(depsMap.get(ITERATE_KEY)); - if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isMap)(target)) { - add(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } - else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isIntegerKey)(key)) { - // new index added to array -> length changes - add(depsMap.get('length')); - } - break; - case "delete" /* DELETE */: - if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isArray)(target)) { - add(depsMap.get(ITERATE_KEY)); - if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isMap)(target)) { - add(depsMap.get(MAP_KEY_ITERATE_KEY)); - } - } - break; - case "set" /* SET */: - if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isMap)(target)) { - add(depsMap.get(ITERATE_KEY)); - } - break; - } - } - const run = (effect) => { - if (( true) && effect.options.onTrigger) { - effect.options.onTrigger({ - effect, - target, - key, - type, - newValue, - oldValue, - oldTarget - }); - } - if (effect.options.scheduler) { - effect.options.scheduler(effect); - } - else { - effect(); - } - }; - effects.forEach(run); -} - -const isNonTrackableKeys = /*#__PURE__*/ (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.makeMap)(`__proto__,__v_isRef,__isVue`); -const builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol) - .map(key => Symbol[key]) - .filter(_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isSymbol)); -const get = /*#__PURE__*/ createGetter(); -const shallowGet = /*#__PURE__*/ createGetter(false, true); -const readonlyGet = /*#__PURE__*/ createGetter(true); -const shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true); -const arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations(); -function createArrayInstrumentations() { - const instrumentations = {}; - ['includes', 'indexOf', 'lastIndexOf'].forEach(key => { - instrumentations[key] = function (...args) { - const arr = toRaw(this); - for (let i = 0, l = this.length; i < l; i++) { - track(arr, "get" /* GET */, i + ''); - } - // we run the method using the original args first (which may be reactive) - const res = arr[key](...args); - if (res === -1 || res === false) { - // if that didn't work, run it again using raw values. - return arr[key](...args.map(toRaw)); - } - else { - return res; - } - }; - }); - ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => { - instrumentations[key] = function (...args) { - pauseTracking(); - const res = toRaw(this)[key].apply(this, args); - resetTracking(); - return res; - }; - }); - return instrumentations; -} -function createGetter(isReadonly = false, shallow = false) { - return function get(target, key, receiver) { - if (key === "__v_isReactive" /* IS_REACTIVE */) { - return !isReadonly; - } - else if (key === "__v_isReadonly" /* IS_READONLY */) { - return isReadonly; - } - else if (key === "__v_raw" /* RAW */ && - receiver === - (isReadonly - ? shallow - ? shallowReadonlyMap - : readonlyMap - : shallow - ? shallowReactiveMap - : reactiveMap).get(target)) { - return target; - } - const targetIsArray = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isArray)(target); - if (!isReadonly && targetIsArray && (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.hasOwn)(arrayInstrumentations, key)) { - return Reflect.get(arrayInstrumentations, key, receiver); - } - const res = Reflect.get(target, key, receiver); - if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isSymbol)(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) { - return res; - } - if (!isReadonly) { - track(target, "get" /* GET */, key); - } - if (shallow) { - return res; - } - if (isRef(res)) { - // ref unwrapping - does not apply for Array + integer key. - const shouldUnwrap = !targetIsArray || !(0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isIntegerKey)(key); - return shouldUnwrap ? res.value : res; - } - if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isObject)(res)) { - // Convert returned value into a proxy as well. we do the isObject check - // here to avoid invalid value warning. Also need to lazy access readonly - // and reactive here to avoid circular dependency. - return isReadonly ? readonly(res) : reactive(res); - } - return res; - }; -} -const set = /*#__PURE__*/ createSetter(); -const shallowSet = /*#__PURE__*/ createSetter(true); -function createSetter(shallow = false) { - return function set(target, key, value, receiver) { - let oldValue = target[key]; - if (!shallow) { - value = toRaw(value); - oldValue = toRaw(oldValue); - if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isArray)(target) && isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; - } - } - const hadKey = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isArray)(target) && (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isIntegerKey)(key) - ? Number(key) < target.length - : (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.hasOwn)(target, key); - const result = Reflect.set(target, key, value, receiver); - // don't trigger if target is something up in the prototype chain of original - if (target === toRaw(receiver)) { - if (!hadKey) { - trigger(target, "add" /* ADD */, key, value); - } - else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.hasChanged)(value, oldValue)) { - trigger(target, "set" /* SET */, key, value, oldValue); - } - } - return result; - }; -} -function deleteProperty(target, key) { - const hadKey = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.hasOwn)(target, key); - const oldValue = target[key]; - const result = Reflect.deleteProperty(target, key); - if (result && hadKey) { - trigger(target, "delete" /* DELETE */, key, undefined, oldValue); - } - return result; -} -function has(target, key) { - const result = Reflect.has(target, key); - if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isSymbol)(key) || !builtInSymbols.has(key)) { - track(target, "has" /* HAS */, key); - } - return result; -} -function ownKeys(target) { - track(target, "iterate" /* ITERATE */, (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isArray)(target) ? 'length' : ITERATE_KEY); - return Reflect.ownKeys(target); -} -const mutableHandlers = { - get, - set, - deleteProperty, - has, - ownKeys -}; -const readonlyHandlers = { - get: readonlyGet, - set(target, key) { - if ((true)) { - console.warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target); - } - return true; - }, - deleteProperty(target, key) { - if ((true)) { - console.warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target); - } - return true; - } -}; -const shallowReactiveHandlers = /*#__PURE__*/ (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.extend)({}, mutableHandlers, { - get: shallowGet, - set: shallowSet -}); -// Props handlers are special in the sense that it should not unwrap top-level -// refs (in order to allow refs to be explicitly passed down), but should -// retain the reactivity of the normal readonly object. -const shallowReadonlyHandlers = /*#__PURE__*/ (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.extend)({}, readonlyHandlers, { - get: shallowReadonlyGet -}); - -const toReactive = (value) => (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isObject)(value) ? reactive(value) : value; -const toReadonly = (value) => (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isObject)(value) ? readonly(value) : value; -const toShallow = (value) => value; -const getProto = (v) => Reflect.getPrototypeOf(v); -function get$1(target, key, isReadonly = false, isShallow = false) { - // #1772: readonly(reactive(Map)) should return readonly + reactive version - // of the value - target = target["__v_raw" /* RAW */]; - const rawTarget = toRaw(target); - const rawKey = toRaw(key); - if (key !== rawKey) { - !isReadonly && track(rawTarget, "get" /* GET */, key); - } - !isReadonly && track(rawTarget, "get" /* GET */, rawKey); - const { has } = getProto(rawTarget); - const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - if (has.call(rawTarget, key)) { - return wrap(target.get(key)); - } - else if (has.call(rawTarget, rawKey)) { - return wrap(target.get(rawKey)); - } - else if (target !== rawTarget) { - // #3602 readonly(reactive(Map)) - // ensure that the nested reactive `Map` can do tracking for itself - target.get(key); - } -} -function has$1(key, isReadonly = false) { - const target = this["__v_raw" /* RAW */]; - const rawTarget = toRaw(target); - const rawKey = toRaw(key); - if (key !== rawKey) { - !isReadonly && track(rawTarget, "has" /* HAS */, key); - } - !isReadonly && track(rawTarget, "has" /* HAS */, rawKey); - return key === rawKey - ? target.has(key) - : target.has(key) || target.has(rawKey); -} -function size(target, isReadonly = false) { - target = target["__v_raw" /* RAW */]; - !isReadonly && track(toRaw(target), "iterate" /* ITERATE */, ITERATE_KEY); - return Reflect.get(target, 'size', target); -} -function add(value) { - value = toRaw(value); - const target = toRaw(this); - const proto = getProto(target); - const hadKey = proto.has.call(target, value); - if (!hadKey) { - target.add(value); - trigger(target, "add" /* ADD */, value, value); - } - return this; -} -function set$1(key, value) { - value = toRaw(value); - const target = toRaw(this); - const { has, get } = getProto(target); - let hadKey = has.call(target, key); - if (!hadKey) { - key = toRaw(key); - hadKey = has.call(target, key); - } - else if ((true)) { - checkIdentityKeys(target, has, key); - } - const oldValue = get.call(target, key); - target.set(key, value); - if (!hadKey) { - trigger(target, "add" /* ADD */, key, value); - } - else if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.hasChanged)(value, oldValue)) { - trigger(target, "set" /* SET */, key, value, oldValue); - } - return this; -} -function deleteEntry(key) { - const target = toRaw(this); - const { has, get } = getProto(target); - let hadKey = has.call(target, key); - if (!hadKey) { - key = toRaw(key); - hadKey = has.call(target, key); - } - else if ((true)) { - checkIdentityKeys(target, has, key); - } - const oldValue = get ? get.call(target, key) : undefined; - // forward the operation before queueing reactions - const result = target.delete(key); - if (hadKey) { - trigger(target, "delete" /* DELETE */, key, undefined, oldValue); - } - return result; -} -function clear() { - const target = toRaw(this); - const hadItems = target.size !== 0; - const oldTarget = ( true) - ? (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isMap)(target) - ? new Map(target) - : new Set(target) - : 0; - // forward the operation before queueing reactions - const result = target.clear(); - if (hadItems) { - trigger(target, "clear" /* CLEAR */, undefined, undefined, oldTarget); - } - return result; -} -function createForEach(isReadonly, isShallow) { - return function forEach(callback, thisArg) { - const observed = this; - const target = observed["__v_raw" /* RAW */]; - const rawTarget = toRaw(target); - const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - !isReadonly && track(rawTarget, "iterate" /* ITERATE */, ITERATE_KEY); - return target.forEach((value, key) => { - // important: make sure the callback is - // 1. invoked with the reactive map as `this` and 3rd arg - // 2. the value received should be a corresponding reactive/readonly. - return callback.call(thisArg, wrap(value), wrap(key), observed); - }); - }; -} -function createIterableMethod(method, isReadonly, isShallow) { - return function (...args) { - const target = this["__v_raw" /* RAW */]; - const rawTarget = toRaw(target); - const targetIsMap = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isMap)(rawTarget); - const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap); - const isKeyOnly = method === 'keys' && targetIsMap; - const innerIterator = target[method](...args); - const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive; - !isReadonly && - track(rawTarget, "iterate" /* ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY); - // return a wrapped iterator which returns observed versions of the - // values emitted from the real iterator - return { - // iterator protocol - next() { - const { value, done } = innerIterator.next(); - return done - ? { value, done } - : { - value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value), - done - }; - }, - // iterable protocol - [Symbol.iterator]() { - return this; - } - }; - }; -} -function createReadonlyMethod(type) { - return function (...args) { - if ((true)) { - const key = args[0] ? `on key "${args[0]}" ` : ``; - console.warn(`${(0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.capitalize)(type)} operation ${key}failed: target is readonly.`, toRaw(this)); - } - return type === "delete" /* DELETE */ ? false : this; - }; -} -function createInstrumentations() { - const mutableInstrumentations = { - get(key) { - return get$1(this, key); - }, - get size() { - return size(this); - }, - has: has$1, - add, - set: set$1, - delete: deleteEntry, - clear, - forEach: createForEach(false, false) - }; - const shallowInstrumentations = { - get(key) { - return get$1(this, key, false, true); - }, - get size() { - return size(this); - }, - has: has$1, - add, - set: set$1, - delete: deleteEntry, - clear, - forEach: createForEach(false, true) - }; - const readonlyInstrumentations = { - get(key) { - return get$1(this, key, true); - }, - get size() { - return size(this, true); - }, - has(key) { - return has$1.call(this, key, true); - }, - add: createReadonlyMethod("add" /* ADD */), - set: createReadonlyMethod("set" /* SET */), - delete: createReadonlyMethod("delete" /* DELETE */), - clear: createReadonlyMethod("clear" /* CLEAR */), - forEach: createForEach(true, false) - }; - const shallowReadonlyInstrumentations = { - get(key) { - return get$1(this, key, true, true); - }, - get size() { - return size(this, true); - }, - has(key) { - return has$1.call(this, key, true); - }, - add: createReadonlyMethod("add" /* ADD */), - set: createReadonlyMethod("set" /* SET */), - delete: createReadonlyMethod("delete" /* DELETE */), - clear: createReadonlyMethod("clear" /* CLEAR */), - forEach: createForEach(true, true) - }; - const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator]; - iteratorMethods.forEach(method => { - mutableInstrumentations[method] = createIterableMethod(method, false, false); - readonlyInstrumentations[method] = createIterableMethod(method, true, false); - shallowInstrumentations[method] = createIterableMethod(method, false, true); - shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true); - }); - return [ - mutableInstrumentations, - readonlyInstrumentations, - shallowInstrumentations, - shallowReadonlyInstrumentations - ]; -} -const [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations(); -function createInstrumentationGetter(isReadonly, shallow) { - const instrumentations = shallow - ? isReadonly - ? shallowReadonlyInstrumentations - : shallowInstrumentations - : isReadonly - ? readonlyInstrumentations - : mutableInstrumentations; - return (target, key, receiver) => { - if (key === "__v_isReactive" /* IS_REACTIVE */) { - return !isReadonly; - } - else if (key === "__v_isReadonly" /* IS_READONLY */) { - return isReadonly; - } - else if (key === "__v_raw" /* RAW */) { - return target; - } - return Reflect.get((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.hasOwn)(instrumentations, key) && key in target - ? instrumentations - : target, key, receiver); - }; -} -const mutableCollectionHandlers = { - get: /*#__PURE__*/ createInstrumentationGetter(false, false) -}; -const shallowCollectionHandlers = { - get: /*#__PURE__*/ createInstrumentationGetter(false, true) -}; -const readonlyCollectionHandlers = { - get: /*#__PURE__*/ createInstrumentationGetter(true, false) -}; -const shallowReadonlyCollectionHandlers = { - get: /*#__PURE__*/ createInstrumentationGetter(true, true) -}; -function checkIdentityKeys(target, has, key) { - const rawKey = toRaw(key); - if (rawKey !== key && has.call(target, rawKey)) { - const type = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.toRawType)(target); - console.warn(`Reactive ${type} contains both the raw and reactive ` + - `versions of the same object${type === `Map` ? ` as keys` : ``}, ` + - `which can lead to inconsistencies. ` + - `Avoid differentiating between the raw and reactive versions ` + - `of an object and only use the reactive version if possible.`); - } -} - -const reactiveMap = new WeakMap(); -const shallowReactiveMap = new WeakMap(); -const readonlyMap = new WeakMap(); -const shallowReadonlyMap = new WeakMap(); -function targetTypeMap(rawType) { - switch (rawType) { - case 'Object': - case 'Array': - return 1 /* COMMON */; - case 'Map': - case 'Set': - case 'WeakMap': - case 'WeakSet': - return 2 /* COLLECTION */; - default: - return 0 /* INVALID */; - } -} -function getTargetType(value) { - return value["__v_skip" /* SKIP */] || !Object.isExtensible(value) - ? 0 /* INVALID */ - : targetTypeMap((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.toRawType)(value)); -} -function reactive(target) { - // if trying to observe a readonly proxy, return the readonly version. - if (target && target["__v_isReadonly" /* IS_READONLY */]) { - return target; - } - return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap); -} -/** - * Return a shallowly-reactive copy of the original object, where only the root - * level properties are reactive. It also does not auto-unwrap refs (even at the - * root level). - */ -function shallowReactive(target) { - return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap); -} -/** - * Creates a readonly copy of the original object. Note the returned copy is not - * made reactive, but `readonly` can be called on an already reactive object. - */ -function readonly(target) { - return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap); -} -/** - * Returns a reactive-copy of the original object, where only the root level - * properties are readonly, and does NOT unwrap refs nor recursively convert - * returned properties. - * This is used for creating the props proxy object for stateful components. - */ -function shallowReadonly(target) { - return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap); -} -function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) { - if (!(0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isObject)(target)) { - if ((true)) { - console.warn(`value cannot be made reactive: ${String(target)}`); - } - return target; - } - // target is already a Proxy, return it. - // exception: calling readonly() on a reactive object - if (target["__v_raw" /* RAW */] && - !(isReadonly && target["__v_isReactive" /* IS_REACTIVE */])) { - return target; - } - // target already has corresponding Proxy - const existingProxy = proxyMap.get(target); - if (existingProxy) { - return existingProxy; - } - // only a whitelist of value types can be observed. - const targetType = getTargetType(target); - if (targetType === 0 /* INVALID */) { - return target; - } - const proxy = new Proxy(target, targetType === 2 /* COLLECTION */ ? collectionHandlers : baseHandlers); - proxyMap.set(target, proxy); - return proxy; -} -function isReactive(value) { - if (isReadonly(value)) { - return isReactive(value["__v_raw" /* RAW */]); - } - return !!(value && value["__v_isReactive" /* IS_REACTIVE */]); -} -function isReadonly(value) { - return !!(value && value["__v_isReadonly" /* IS_READONLY */]); -} -function isProxy(value) { - return isReactive(value) || isReadonly(value); -} -function toRaw(observed) { - return ((observed && toRaw(observed["__v_raw" /* RAW */])) || observed); -} -function markRaw(value) { - (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.def)(value, "__v_skip" /* SKIP */, true); - return value; -} - -const convert = (val) => (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isObject)(val) ? reactive(val) : val; -function isRef(r) { - return Boolean(r && r.__v_isRef === true); -} -function ref(value) { - return createRef(value); -} -function shallowRef(value) { - return createRef(value, true); -} -class RefImpl { - constructor(value, _shallow = false) { - this._shallow = _shallow; - this.__v_isRef = true; - this._rawValue = _shallow ? value : toRaw(value); - this._value = _shallow ? value : convert(value); - } - get value() { - track(toRaw(this), "get" /* GET */, 'value'); - return this._value; - } - set value(newVal) { - newVal = this._shallow ? newVal : toRaw(newVal); - if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.hasChanged)(newVal, this._rawValue)) { - this._rawValue = newVal; - this._value = this._shallow ? newVal : convert(newVal); - trigger(toRaw(this), "set" /* SET */, 'value', newVal); - } - } -} -function createRef(rawValue, shallow = false) { - if (isRef(rawValue)) { - return rawValue; - } - return new RefImpl(rawValue, shallow); -} -function triggerRef(ref) { - trigger(toRaw(ref), "set" /* SET */, 'value', ( true) ? ref.value : 0); -} -function unref(ref) { - return isRef(ref) ? ref.value : ref; -} -const shallowUnwrapHandlers = { - get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)), - set: (target, key, value, receiver) => { - const oldValue = target[key]; - if (isRef(oldValue) && !isRef(value)) { - oldValue.value = value; - return true; - } - else { - return Reflect.set(target, key, value, receiver); - } - } -}; -function proxyRefs(objectWithRefs) { - return isReactive(objectWithRefs) - ? objectWithRefs - : new Proxy(objectWithRefs, shallowUnwrapHandlers); -} -class CustomRefImpl { - constructor(factory) { - this.__v_isRef = true; - const { get, set } = factory(() => track(this, "get" /* GET */, 'value'), () => trigger(this, "set" /* SET */, 'value')); - this._get = get; - this._set = set; - } - get value() { - return this._get(); - } - set value(newVal) { - this._set(newVal); - } -} -function customRef(factory) { - return new CustomRefImpl(factory); -} -function toRefs(object) { - if (( true) && !isProxy(object)) { - console.warn(`toRefs() expects a reactive object but received a plain one.`); - } - const ret = (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isArray)(object) ? new Array(object.length) : {}; - for (const key in object) { - ret[key] = toRef(object, key); - } - return ret; -} -class ObjectRefImpl { - constructor(_object, _key) { - this._object = _object; - this._key = _key; - this.__v_isRef = true; - } - get value() { - return this._object[this._key]; - } - set value(newVal) { - this._object[this._key] = newVal; - } -} -function toRef(object, key) { - return isRef(object[key]) - ? object[key] - : new ObjectRefImpl(object, key); -} - -class ComputedRefImpl { - constructor(getter, _setter, isReadonly) { - this._setter = _setter; - this._dirty = true; - this.__v_isRef = true; - this.effect = effect(getter, { - lazy: true, - scheduler: () => { - if (!this._dirty) { - this._dirty = true; - trigger(toRaw(this), "set" /* SET */, 'value'); - } - } - }); - this["__v_isReadonly" /* IS_READONLY */] = isReadonly; - } - get value() { - // the computed ref may get wrapped by other proxies e.g. readonly() #3376 - const self = toRaw(this); - if (self._dirty) { - self._value = this.effect(); - self._dirty = false; - } - track(self, "get" /* GET */, 'value'); - return self._value; - } - set value(newValue) { - this._setter(newValue); - } -} -function computed(getterOrOptions) { - let getter; - let setter; - if ((0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isFunction)(getterOrOptions)) { - getter = getterOrOptions; - setter = ( true) - ? () => { - console.warn('Write operation failed: computed value is readonly'); - } - : 0; - } - else { - getter = getterOrOptions.get; - setter = getterOrOptions.set; - } - return new ComputedRefImpl(getter, setter, (0,_vue_shared__WEBPACK_IMPORTED_MODULE_0__.isFunction)(getterOrOptions) || !getterOrOptions.set); -} - - - - -/***/ }), - -/***/ "./node_modules/@vue/shared/dist/shared.esm-bundler.js": -/*!*************************************************************!*\ - !*** ./node_modules/@vue/shared/dist/shared.esm-bundler.js ***! - \*************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ EMPTY_ARR: () => (/* binding */ EMPTY_ARR), -/* harmony export */ EMPTY_OBJ: () => (/* binding */ EMPTY_OBJ), -/* harmony export */ NO: () => (/* binding */ NO), -/* harmony export */ NOOP: () => (/* binding */ NOOP), -/* harmony export */ PatchFlagNames: () => (/* binding */ PatchFlagNames), -/* harmony export */ babelParserDefaultPlugins: () => (/* binding */ babelParserDefaultPlugins), -/* harmony export */ camelize: () => (/* binding */ camelize), -/* harmony export */ capitalize: () => (/* binding */ capitalize), -/* harmony export */ def: () => (/* binding */ def), -/* harmony export */ escapeHtml: () => (/* binding */ escapeHtml), -/* harmony export */ escapeHtmlComment: () => (/* binding */ escapeHtmlComment), -/* harmony export */ extend: () => (/* binding */ extend), -/* harmony export */ generateCodeFrame: () => (/* binding */ generateCodeFrame), -/* harmony export */ getGlobalThis: () => (/* binding */ getGlobalThis), -/* harmony export */ hasChanged: () => (/* binding */ hasChanged), -/* harmony export */ hasOwn: () => (/* binding */ hasOwn), -/* harmony export */ hyphenate: () => (/* binding */ hyphenate), -/* harmony export */ invokeArrayFns: () => (/* binding */ invokeArrayFns), -/* harmony export */ isArray: () => (/* binding */ isArray), -/* harmony export */ isBooleanAttr: () => (/* binding */ isBooleanAttr), -/* harmony export */ isDate: () => (/* binding */ isDate), -/* harmony export */ isFunction: () => (/* binding */ isFunction), -/* harmony export */ isGloballyWhitelisted: () => (/* binding */ isGloballyWhitelisted), -/* harmony export */ isHTMLTag: () => (/* binding */ isHTMLTag), -/* harmony export */ isIntegerKey: () => (/* binding */ isIntegerKey), -/* harmony export */ isKnownAttr: () => (/* binding */ isKnownAttr), -/* harmony export */ isMap: () => (/* binding */ isMap), -/* harmony export */ isModelListener: () => (/* binding */ isModelListener), -/* harmony export */ isNoUnitNumericStyleProp: () => (/* binding */ isNoUnitNumericStyleProp), -/* harmony export */ isObject: () => (/* binding */ isObject), -/* harmony export */ isOn: () => (/* binding */ isOn), -/* harmony export */ isPlainObject: () => (/* binding */ isPlainObject), -/* harmony export */ isPromise: () => (/* binding */ isPromise), -/* harmony export */ isReservedProp: () => (/* binding */ isReservedProp), -/* harmony export */ isSSRSafeAttrName: () => (/* binding */ isSSRSafeAttrName), -/* harmony export */ isSVGTag: () => (/* binding */ isSVGTag), -/* harmony export */ isSet: () => (/* binding */ isSet), -/* harmony export */ isSpecialBooleanAttr: () => (/* binding */ isSpecialBooleanAttr), -/* harmony export */ isString: () => (/* binding */ isString), -/* harmony export */ isSymbol: () => (/* binding */ isSymbol), -/* harmony export */ isVoidTag: () => (/* binding */ isVoidTag), -/* harmony export */ looseEqual: () => (/* binding */ looseEqual), -/* harmony export */ looseIndexOf: () => (/* binding */ looseIndexOf), -/* harmony export */ makeMap: () => (/* binding */ makeMap), -/* harmony export */ normalizeClass: () => (/* binding */ normalizeClass), -/* harmony export */ normalizeStyle: () => (/* binding */ normalizeStyle), -/* harmony export */ objectToString: () => (/* binding */ objectToString), -/* harmony export */ parseStringStyle: () => (/* binding */ parseStringStyle), -/* harmony export */ propsToAttrMap: () => (/* binding */ propsToAttrMap), -/* harmony export */ remove: () => (/* binding */ remove), -/* harmony export */ slotFlagsText: () => (/* binding */ slotFlagsText), -/* harmony export */ stringifyStyle: () => (/* binding */ stringifyStyle), -/* harmony export */ toDisplayString: () => (/* binding */ toDisplayString), -/* harmony export */ toHandlerKey: () => (/* binding */ toHandlerKey), -/* harmony export */ toNumber: () => (/* binding */ toNumber), -/* harmony export */ toRawType: () => (/* binding */ toRawType), -/* harmony export */ toTypeString: () => (/* binding */ toTypeString) -/* harmony export */ }); -/** - * Make a map and return a function for checking if a key - * is in that map. - * IMPORTANT: all calls of this function must be prefixed with - * \/\*#\_\_PURE\_\_\*\/ - * So that rollup can tree-shake them if necessary. - */ -function makeMap(str, expectsLowerCase) { - const map = Object.create(null); - const list = str.split(','); - for (let i = 0; i < list.length; i++) { - map[list[i]] = true; - } - return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val]; -} - -/** - * dev only flag -> name mapping - */ -const PatchFlagNames = { - [1 /* TEXT */]: `TEXT`, - [2 /* CLASS */]: `CLASS`, - [4 /* STYLE */]: `STYLE`, - [8 /* PROPS */]: `PROPS`, - [16 /* FULL_PROPS */]: `FULL_PROPS`, - [32 /* HYDRATE_EVENTS */]: `HYDRATE_EVENTS`, - [64 /* STABLE_FRAGMENT */]: `STABLE_FRAGMENT`, - [128 /* KEYED_FRAGMENT */]: `KEYED_FRAGMENT`, - [256 /* UNKEYED_FRAGMENT */]: `UNKEYED_FRAGMENT`, - [512 /* NEED_PATCH */]: `NEED_PATCH`, - [1024 /* DYNAMIC_SLOTS */]: `DYNAMIC_SLOTS`, - [2048 /* DEV_ROOT_FRAGMENT */]: `DEV_ROOT_FRAGMENT`, - [-1 /* HOISTED */]: `HOISTED`, - [-2 /* BAIL */]: `BAIL` -}; - -/** - * Dev only - */ -const slotFlagsText = { - [1 /* STABLE */]: 'STABLE', - [2 /* DYNAMIC */]: 'DYNAMIC', - [3 /* FORWARDED */]: 'FORWARDED' -}; - -const GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' + - 'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' + - 'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt'; -const isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED); - -const range = 2; -function generateCodeFrame(source, start = 0, end = source.length) { - // Split the content into individual lines but capture the newline sequence - // that separated each line. This is important because the actual sequence is - // needed to properly take into account the full line length for offset - // comparison - let lines = source.split(/(\r?\n)/); - // Separate the lines and newline sequences into separate arrays for easier referencing - const newlineSequences = lines.filter((_, idx) => idx % 2 === 1); - lines = lines.filter((_, idx) => idx % 2 === 0); - let count = 0; - const res = []; - for (let i = 0; i < lines.length; i++) { - count += - lines[i].length + - ((newlineSequences[i] && newlineSequences[i].length) || 0); - if (count >= start) { - for (let j = i - range; j <= i + range || end > count; j++) { - if (j < 0 || j >= lines.length) - continue; - const line = j + 1; - res.push(`${line}${' '.repeat(Math.max(3 - String(line).length, 0))}| ${lines[j]}`); - const lineLength = lines[j].length; - const newLineSeqLength = (newlineSequences[j] && newlineSequences[j].length) || 0; - if (j === i) { - // push underline - const pad = start - (count - (lineLength + newLineSeqLength)); - const length = Math.max(1, end > count ? lineLength - pad : end - start); - res.push(` | ` + ' '.repeat(pad) + '^'.repeat(length)); - } - else if (j > i) { - if (end > count) { - const length = Math.max(Math.min(end - count, lineLength), 1); - res.push(` | ` + '^'.repeat(length)); - } - count += lineLength + newLineSeqLength; - } - } - break; - } - } - return res.join('\n'); -} - -/** - * On the client we only need to offer special cases for boolean attributes that - * have different names from their corresponding dom properties: - * - itemscope -> N/A - * - allowfullscreen -> allowFullscreen - * - formnovalidate -> formNoValidate - * - ismap -> isMap - * - nomodule -> noModule - * - novalidate -> noValidate - * - readonly -> readOnly - */ -const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`; -const isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs); -/** - * The full list is needed during SSR to produce the correct initial markup. - */ -const isBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs + - `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,` + - `loop,open,required,reversed,scoped,seamless,` + - `checked,muted,multiple,selected`); -const unsafeAttrCharRE = /[>/="'\u0009\u000a\u000c\u0020]/; -const attrValidationCache = {}; -function isSSRSafeAttrName(name) { - if (attrValidationCache.hasOwnProperty(name)) { - return attrValidationCache[name]; - } - const isUnsafe = unsafeAttrCharRE.test(name); - if (isUnsafe) { - console.error(`unsafe attribute name: ${name}`); - } - return (attrValidationCache[name] = !isUnsafe); -} -const propsToAttrMap = { - acceptCharset: 'accept-charset', - className: 'class', - htmlFor: 'for', - httpEquiv: 'http-equiv' -}; -/** - * CSS properties that accept plain numbers - */ -const isNoUnitNumericStyleProp = /*#__PURE__*/ makeMap(`animation-iteration-count,border-image-outset,border-image-slice,` + - `border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,` + - `columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,` + - `grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,` + - `grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,` + - `line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,` + - // SVG - `fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,` + - `stroke-miterlimit,stroke-opacity,stroke-width`); -/** - * Known attributes, this is used for stringification of runtime static nodes - * so that we don't stringify bindings that cannot be set from HTML. - * Don't also forget to allow `data-*` and `aria-*`! - * Generated from https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes - */ -const isKnownAttr = /*#__PURE__*/ makeMap(`accept,accept-charset,accesskey,action,align,allow,alt,async,` + - `autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,` + - `border,buffered,capture,challenge,charset,checked,cite,class,code,` + - `codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,` + - `coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,` + - `disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,` + - `formaction,formenctype,formmethod,formnovalidate,formtarget,headers,` + - `height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,` + - `ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,` + - `manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,` + - `open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,` + - `referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,` + - `selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,` + - `start,step,style,summary,tabindex,target,title,translate,type,usemap,` + - `value,width,wrap`); - -function normalizeStyle(value) { - if (isArray(value)) { - const res = {}; - for (let i = 0; i < value.length; i++) { - const item = value[i]; - const normalized = normalizeStyle(isString(item) ? parseStringStyle(item) : item); - if (normalized) { - for (const key in normalized) { - res[key] = normalized[key]; - } - } - } - return res; - } - else if (isObject(value)) { - return value; - } -} -const listDelimiterRE = /;(?![^(]*\))/g; -const propertyDelimiterRE = /:(.+)/; -function parseStringStyle(cssText) { - const ret = {}; - cssText.split(listDelimiterRE).forEach(item => { - if (item) { - const tmp = item.split(propertyDelimiterRE); - tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim()); - } - }); - return ret; -} -function stringifyStyle(styles) { - let ret = ''; - if (!styles) { - return ret; - } - for (const key in styles) { - const value = styles[key]; - const normalizedKey = key.startsWith(`--`) ? key : hyphenate(key); - if (isString(value) || - (typeof value === 'number' && isNoUnitNumericStyleProp(normalizedKey))) { - // only render valid values - ret += `${normalizedKey}:${value};`; - } - } - return ret; -} -function normalizeClass(value) { - let res = ''; - if (isString(value)) { - res = value; - } - else if (isArray(value)) { - for (let i = 0; i < value.length; i++) { - const normalized = normalizeClass(value[i]); - if (normalized) { - res += normalized + ' '; - } - } - } - else if (isObject(value)) { - for (const name in value) { - if (value[name]) { - res += name + ' '; - } - } - } - return res.trim(); -} - -// These tag configs are shared between compiler-dom and runtime-dom, so they -// https://developer.mozilla.org/en-US/docs/Web/HTML/Element -const HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' + - 'header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,div,dd,dl,dt,figcaption,' + - 'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' + - 'data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,s,samp,small,span,strong,sub,sup,' + - 'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' + - 'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' + - 'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' + - 'option,output,progress,select,textarea,details,dialog,menu,' + - 'summary,template,blockquote,iframe,tfoot'; -// https://developer.mozilla.org/en-US/docs/Web/SVG/Element -const SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' + - 'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' + - 'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' + - 'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' + - 'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' + - 'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' + - 'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' + - 'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' + - 'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' + - 'text,textPath,title,tspan,unknown,use,view'; -const VOID_TAGS = 'area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr'; -const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS); -const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS); -const isVoidTag = /*#__PURE__*/ makeMap(VOID_TAGS); - -const escapeRE = /["'&<>]/; -function escapeHtml(string) { - const str = '' + string; - const match = escapeRE.exec(str); - if (!match) { - return str; - } - let html = ''; - let escaped; - let index; - let lastIndex = 0; - for (index = match.index; index < str.length; index++) { - switch (str.charCodeAt(index)) { - case 34: // " - escaped = '"'; - break; - case 38: // & - escaped = '&'; - break; - case 39: // ' - escaped = '''; - break; - case 60: // < - escaped = '<'; - break; - case 62: // > - escaped = '>'; - break; - default: - continue; - } - if (lastIndex !== index) { - html += str.substring(lastIndex, index); - } - lastIndex = index + 1; - html += escaped; - } - return lastIndex !== index ? html + str.substring(lastIndex, index) : html; -} -// https://www.w3.org/TR/html52/syntax.html#comments -const commentStripRE = /^-?>||--!>| looseEqual(item, val)); -} - -/** - * For converting {{ interpolation }} values to displayed strings. - * @private - */ -const toDisplayString = (val) => { - return val == null - ? '' - : isObject(val) - ? JSON.stringify(val, replacer, 2) - : String(val); -}; -const replacer = (_key, val) => { - if (isMap(val)) { - return { - [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => { - entries[`${key} =>`] = val; - return entries; - }, {}) - }; - } - else if (isSet(val)) { - return { - [`Set(${val.size})`]: [...val.values()] - }; - } - else if (isObject(val) && !isArray(val) && !isPlainObject(val)) { - return String(val); - } - return val; -}; - -/** - * List of @babel/parser plugins that are used for template expression - * transforms and SFC script transforms. By default we enable proposals slated - * for ES2020. This will need to be updated as the spec moves forward. - * Full list at https://babeljs.io/docs/en/next/babel-parser#plugins - */ -const babelParserDefaultPlugins = [ - 'bigInt', - 'optionalChaining', - 'nullishCoalescingOperator' -]; -const EMPTY_OBJ = ( true) - ? Object.freeze({}) - : 0; -const EMPTY_ARR = ( true) ? Object.freeze([]) : 0; -const NOOP = () => { }; -/** - * Always return false. - */ -const NO = () => false; -const onRE = /^on[^a-z]/; -const isOn = (key) => onRE.test(key); -const isModelListener = (key) => key.startsWith('onUpdate:'); -const extend = Object.assign; -const remove = (arr, el) => { - const i = arr.indexOf(el); - if (i > -1) { - arr.splice(i, 1); - } -}; -const hasOwnProperty = Object.prototype.hasOwnProperty; -const hasOwn = (val, key) => hasOwnProperty.call(val, key); -const isArray = Array.isArray; -const isMap = (val) => toTypeString(val) === '[object Map]'; -const isSet = (val) => toTypeString(val) === '[object Set]'; -const isDate = (val) => val instanceof Date; -const isFunction = (val) => typeof val === 'function'; -const isString = (val) => typeof val === 'string'; -const isSymbol = (val) => typeof val === 'symbol'; -const isObject = (val) => val !== null && typeof val === 'object'; -const isPromise = (val) => { - return isObject(val) && isFunction(val.then) && isFunction(val.catch); -}; -const objectToString = Object.prototype.toString; -const toTypeString = (value) => objectToString.call(value); -const toRawType = (value) => { - // extract "RawType" from strings like "[object RawType]" - return toTypeString(value).slice(8, -1); -}; -const isPlainObject = (val) => toTypeString(val) === '[object Object]'; -const isIntegerKey = (key) => isString(key) && - key !== 'NaN' && - key[0] !== '-' && - '' + parseInt(key, 10) === key; -const isReservedProp = /*#__PURE__*/ makeMap( -// the leading comma is intentional so empty string "" is also included -',key,ref,' + - 'onVnodeBeforeMount,onVnodeMounted,' + - 'onVnodeBeforeUpdate,onVnodeUpdated,' + - 'onVnodeBeforeUnmount,onVnodeUnmounted'); -const cacheStringFunction = (fn) => { - const cache = Object.create(null); - return ((str) => { - const hit = cache[str]; - return hit || (cache[str] = fn(str)); - }); -}; -const camelizeRE = /-(\w)/g; -/** - * @private - */ -const camelize = cacheStringFunction((str) => { - return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : '')); -}); -const hyphenateRE = /\B([A-Z])/g; -/** - * @private - */ -const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase()); -/** - * @private - */ -const capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1)); -/** - * @private - */ -const toHandlerKey = cacheStringFunction((str) => (str ? `on${capitalize(str)}` : ``)); -// compare whether a value has changed, accounting for NaN. -const hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue); -const invokeArrayFns = (fns, arg) => { - for (let i = 0; i < fns.length; i++) { - fns[i](arg); - } -}; -const def = (obj, key, value) => { - Object.defineProperty(obj, key, { - configurable: true, - enumerable: false, - value - }); -}; -const toNumber = (val) => { - const n = parseFloat(val); - return isNaN(n) ? val : n; -}; -let _globalThis; -const getGlobalThis = () => { - return (_globalThis || - (_globalThis = - typeof globalThis !== 'undefined' - ? globalThis - : typeof self !== 'undefined' - ? self - : typeof window !== 'undefined' - ? window - : typeof __webpack_require__.g !== 'undefined' - ? __webpack_require__.g - : {})); -}; - - - - -/***/ }), - /***/ "./node_modules/alpinejs/dist/module.esm.js": /*!**************************************************!*\ !*** ./node_modules/alpinejs/dist/module.esm.js ***! @@ -1538,7 +12,6 @@ __webpack_require__.r(__webpack_exports__); /* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ "default": () => (/* binding */ module_default) /* harmony export */ }); -/* harmony import */ var _vue_reactivity__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @vue/reactivity */ "./node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js"); // packages/alpinejs/src/scheduler.js var flushPending = false; var flushing = false; @@ -1602,7 +75,7 @@ function overrideEffect(override) { effect = override; } function elementBoundEffect(el) { - let cleanup = () => { + let cleanup2 = () => { }; let wrappedEffect = (callback) => { let effectReference = effect(callback); @@ -1613,7 +86,7 @@ function elementBoundEffect(el) { }; } el._x_effects.add(effectReference); - cleanup = () => { + cleanup2 = () => { if (effectReference === void 0) return; el._x_effects.delete(effectReference); @@ -1622,10 +95,124 @@ function elementBoundEffect(el) { return effectReference; }; return [wrappedEffect, () => { - cleanup(); + cleanup2(); }]; } +// packages/alpinejs/src/utils/dispatch.js +function dispatch(el, name, detail = {}) { + el.dispatchEvent( + new CustomEvent(name, { + detail, + bubbles: true, + // Allows events to pass the shadow DOM barrier. + composed: true, + cancelable: true + }) + ); +} + +// packages/alpinejs/src/utils/walk.js +function walk(el, callback) { + if (typeof ShadowRoot === "function" && el instanceof ShadowRoot) { + Array.from(el.children).forEach((el2) => walk(el2, callback)); + return; + } + let skip = false; + callback(el, () => skip = true); + if (skip) + return; + let node = el.firstElementChild; + while (node) { + walk(node, callback, false); + node = node.nextElementSibling; + } +} + +// packages/alpinejs/src/utils/warn.js +function warn(message, ...args) { + console.warn(`Alpine Warning: ${message}`, ...args); +} + +// packages/alpinejs/src/lifecycle.js +var started = false; +function start() { + if (started) + warn("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."); + started = true; + if (!document.body) + warn("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's `