pull/7316/head
Your Name 1 week ago
parent beb980eb50
commit fcea9dc34b

@ -76,9 +76,46 @@ class ExportLanguages extends Command
file_put_contents($pathAlt, $json);
}
$this->writeLocalesManifest($langs);
return Command::SUCCESS;
}
/**
* Write a static locales manifest (lang/locales.json) that is the single
* source of truth for the available UI languages. Generated here so it is
* always regenerated alongside the exported strings, avoiding a runtime
* cache that can go stale (see Localization::languages()).
*
* Sorted by English display name so consumers render an alphabetical list.
*
* @param array<int, string> $langs Valid locale codes (lang/ folders).
*/
protected function writeLocalesManifest(array $langs): void
{
$locales = array_map(function ($code) {
return [
'code' => $code,
'name' => locale_get_display_name($code, 'en'),
'nativeName' => locale_get_display_name($code, $code),
];
}, $langs);
usort($locales, function ($a, $b) {
return strcasecmp($a['name'], $b['name']);
});
$json = json_encode($locales, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
// Server-side source of truth (used by Localization::languages()).
file_put_contents(lang_path('locales.json'), $json);
// Public copy so the SPA can fetch the same ordered list.
$publicManifest = public_path('_lang/locales.json');
file_put_contents($publicManifest, $json);
@chmod($publicManifest, 0644);
}
/**
* Delete .json exports in the given directory that don't correspond to
* a current language folder, leaving valid locale files untouched.
@ -92,10 +129,12 @@ class ExportLanguages extends Command
}
$valid = array_flip($langs);
// Not a locale export, but written by writeLocalesManifest().
$keep = ['locales' => true];
foreach (glob(rtrim($dir, '/').'/*.json') as $file) {
$locale = basename($file, '.json');
if (! isset($valid[$locale])) {
if (! isset($valid[$locale]) && ! isset($keep[$locale])) {
@unlink($file);
}
}

@ -3,16 +3,67 @@
namespace App\Util\Localization;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Cache;
class Localization
{
/**
* List of available UI language codes.
*
* Reads the static manifest generated by `php artisan i18n:export`
* (lang/locales.json) so the list is deterministic and never served from
* a runtime cache that can go stale. Falls back to scanning the lang/
* directory if the manifest is missing.
*
* @return array<int, string>
*/
public static function languages()
{
return Cache::remember('core:localization:languages', now()->addDays(1), function () {
$dir = lang_path();
return static::localesFromManifest() ?? static::localesFromScan();
}
/**
* Full locale metadata (code, name, nativeName) from the manifest,
* sorted by display name. Empty array if the manifest is missing.
*
* @return array<int, array{code: string, name: string, nativeName: string}>
*/
public static function locales(): array
{
$path = lang_path('locales.json');
if (! is_file($path)) {
return [];
}
$data = json_decode((string) file_get_contents($path), true);
return is_array($data) ? $data : [];
}
/**
* @return array<int, string>|null
*/
protected static function localesFromManifest(): ?array
{
$locales = static::locales();
if (empty($locales)) {
return null;
}
return array_values(array_filter(array_map(
fn ($l) => $l['code'] ?? null,
$locales
)));
}
/**
* @return array<int, string>
*/
protected static function localesFromScan(): array
{
$dir = lang_path();
return Arr::flatten(array_diff(scandir($dir), ['..', '.', 'vendor', '.DS_Store']));
});
return Arr::flatten(array_diff(scandir($dir), ['..', '.', 'vendor', '.DS_Store', 'locales.json']));
}
}

@ -0,0 +1,362 @@
[
{
"code": "af-ZA",
"name": "Afrikaans (South Africa)",
"nativeName": "Afrikaans (Suid-Afrika)"
},
{
"code": "sq-AL",
"name": "Albanian (Albania)",
"nativeName": "shqip (Shqipëri)"
},
{
"code": "ar-SA",
"name": "Arabic (Saudi Arabia)",
"nativeName": "العربية (المملكة العربية السعودية)"
},
{
"code": "hy-AM",
"name": "Armenian (Armenia)",
"nativeName": "հայերեն (Հայաստան)"
},
{
"code": "bn-BD",
"name": "Bangla (Bangladesh)",
"nativeName": "বাংলা (বাংলাদেশ)"
},
{
"code": "eu-ES",
"name": "Basque (Spain)",
"nativeName": "euskara (Espainia)"
},
{
"code": "bs-BA",
"name": "Bosnian (Bosnia & Herzegovina)",
"nativeName": "bosanski (Bosna i Hercegovina)"
},
{
"code": "bg-BG",
"name": "Bulgarian (Bulgaria)",
"nativeName": "български (България)"
},
{
"code": "ca-ES",
"name": "Catalan (Spain)",
"nativeName": "català (Espanya)"
},
{
"code": "zh-CN",
"name": "Chinese (China)",
"nativeName": "中文(中国)"
},
{
"code": "zh-TW",
"name": "Chinese (Taiwan)",
"nativeName": "中文(台灣)"
},
{
"code": "syc-SY",
"name": "Classical Syriac (Syria)",
"nativeName": "Classical Syriac (Syria)"
},
{
"code": "hr-HR",
"name": "Croatian (Croatia)",
"nativeName": "hrvatski (Hrvatska)"
},
{
"code": "cs-CZ",
"name": "Czech (Czechia)",
"nativeName": "čeština (Česko)"
},
{
"code": "da-DK",
"name": "Danish (Denmark)",
"nativeName": "dansk (Danmark)"
},
{
"code": "nl-NL",
"name": "Dutch (Netherlands)",
"nativeName": "Nederlands (Nederland)"
},
{
"code": "en-PT",
"name": "English (Portugal)",
"nativeName": "English (Portugal)"
},
{
"code": "en-US",
"name": "English (United States)",
"nativeName": "English (United States)"
},
{
"code": "eo-UY",
"name": "Esperanto (Uruguay)",
"nativeName": "Esperanto (Urugvajo)"
},
{
"code": "fil-PH",
"name": "Filipino (Philippines)",
"nativeName": "Filipino (Pilipinas)"
},
{
"code": "fi-FI",
"name": "Finnish (Finland)",
"nativeName": "suomi (Suomi)"
},
{
"code": "fr-FR",
"name": "French (France)",
"nativeName": "français (France)"
},
{
"code": "gl-ES",
"name": "Galician (Spain)",
"nativeName": "galego (España)"
},
{
"code": "de-DE",
"name": "German (Germany)",
"nativeName": "Deutsch (Deutschland)"
},
{
"code": "el-GR",
"name": "Greek (Greece)",
"nativeName": "Ελληνικά (Ελλάδα)"
},
{
"code": "he-IL",
"name": "Hebrew (Israel)",
"nativeName": "עברית (ישראל)"
},
{
"code": "hi-IN",
"name": "Hindi (India)",
"nativeName": "हिन्दी (भारत)"
},
{
"code": "hu-HU",
"name": "Hungarian (Hungary)",
"nativeName": "magyar (Magyarország)"
},
{
"code": "is-IS",
"name": "Icelandic (Iceland)",
"nativeName": "íslenska (Ísland)"
},
{
"code": "id-ID",
"name": "Indonesian (Indonesia)",
"nativeName": "Indonesia (Indonesia)"
},
{
"code": "ga-IE",
"name": "Irish (Ireland)",
"nativeName": "Gaeilge (Éire)"
},
{
"code": "it-IT",
"name": "Italian (Italy)",
"nativeName": "italiano (Italia)"
},
{
"code": "ja-JP",
"name": "Japanese (Japan)",
"nativeName": "日本語 (日本)"
},
{
"code": "tlh-AA",
"name": "Klingon (AA)",
"nativeName": "Klingon (AA)"
},
{
"code": "ko-KR",
"name": "Korean (South Korea)",
"nativeName": "한국어(대한민국)"
},
{
"code": "ku-TR",
"name": "Kurdish (Türkiye)",
"nativeName": "kurdî (kurmancî) (Tirkîye)"
},
{
"code": "lo-LA",
"name": "Lao (Laos)",
"nativeName": "ລາວ (ລາວ)"
},
{
"code": "la-LA",
"name": "Latin (Laos)",
"nativeName": "Latin (Laos)"
},
{
"code": "lv-LV",
"name": "Latvian (Latvia)",
"nativeName": "latviešu (Latvija)"
},
{
"code": "lt-LT",
"name": "Lithuanian (Lithuania)",
"nativeName": "lietuvių (Lietuva)"
},
{
"code": "lb-LU",
"name": "Luxembourgish (Luxembourg)",
"nativeName": "Lëtzebuergesch (Lëtzebuerg)"
},
{
"code": "mk-MK",
"name": "Macedonian (North Macedonia)",
"nativeName": "македонски (Северна Македонија)"
},
{
"code": "ms-MY",
"name": "Malay (Malaysia)",
"nativeName": "Melayu (Malaysia)"
},
{
"code": "me-ME",
"name": "me (Montenegro)",
"nativeName": "me (Montenegro)"
},
{
"code": "mn-MN",
"name": "Mongolian (Mongolia)",
"nativeName": "монгол (Монгол)"
},
{
"code": "ne-NP",
"name": "Nepali (Nepal)",
"nativeName": "नेपाली (नेपाल)"
},
{
"code": "no-NO",
"name": "Norwegian (Norway)",
"nativeName": "norsk (Norge)"
},
{
"code": "oc-FR",
"name": "Occitan (France)",
"nativeName": "occitan (França)"
},
{
"code": "ps-AF",
"name": "Pashto (Afghanistan)",
"nativeName": "پښتو (افغانستان)"
},
{
"code": "fa-IR",
"name": "Persian (Iran)",
"nativeName": "فارسی (ایران)"
},
{
"code": "pl-PL",
"name": "Polish (Poland)",
"nativeName": "polski (Polska)"
},
{
"code": "pt-PT",
"name": "Portuguese (Portugal)",
"nativeName": "português (Portugal)"
},
{
"code": "pa-IN",
"name": "Punjabi (India)",
"nativeName": "ਪੰਜਾਬੀ (ਭਾਰਤ)"
},
{
"code": "ro-RO",
"name": "Romanian (Romania)",
"nativeName": "română (România)"
},
{
"code": "ru-RU",
"name": "Russian (Russia)",
"nativeName": "русский (Россия)"
},
{
"code": "sc-IT",
"name": "Sardinian (Italy)",
"nativeName": "sardu (Itàlia)"
},
{
"code": "sco-GB",
"name": "Scots (United Kingdom)",
"nativeName": "Scots (United Kingdom)"
},
{
"code": "gd-GB",
"name": "Scottish Gaelic (United Kingdom)",
"nativeName": "Gàidhlig (An Rìoghachd Aonaichte)"
},
{
"code": "sr-SP",
"name": "Serbian (SP)",
"nativeName": "српски (SP)"
},
{
"code": "sk-SK",
"name": "Slovak (Slovakia)",
"nativeName": "slovenčina (Slovensko)"
},
{
"code": "sl-SI",
"name": "Slovenian (Slovenia)",
"nativeName": "slovenščina (Slovenija)"
},
{
"code": "es-ES",
"name": "Spanish (Spain)",
"nativeName": "español (España)"
},
{
"code": "sv-SE",
"name": "Swedish (Sweden)",
"nativeName": "svenska (Sverige)"
},
{
"code": "ta-IN",
"name": "Tamil (India)",
"nativeName": "தமிழ் (இந்தியா)"
},
{
"code": "th-TH",
"name": "Thai (Thailand)",
"nativeName": "ไทย (ไทย)"
},
{
"code": "bo-BT",
"name": "Tibetan (Bhutan)",
"nativeName": "བོད་སྐད་ (BT)"
},
{
"code": "tr-TR",
"name": "Turkish (Türkiye)",
"nativeName": "Türkçe (Türkiye)"
},
{
"code": "uk-UA",
"name": "Ukrainian (Ukraine)",
"nativeName": "українська (Україна)"
},
{
"code": "ug-CN",
"name": "Uyghur (China)",
"nativeName": "ئۇيغۇرچە (جۇڭگو)"
},
{
"code": "vec-IT",
"name": "Venetian (Italy)",
"nativeName": "veneto (Italia)"
},
{
"code": "vi-VN",
"name": "Vietnamese (Vietnam)",
"nativeName": "Tiếng Việt (Việt Nam)"
},
{
"code": "cy-GB",
"name": "Welsh (United Kingdom)",
"nativeName": "Cymraeg (Y Deyrnas Unedig)"
}
]

@ -0,0 +1,362 @@
[
{
"code": "af-ZA",
"name": "Afrikaans (South Africa)",
"nativeName": "Afrikaans (Suid-Afrika)"
},
{
"code": "sq-AL",
"name": "Albanian (Albania)",
"nativeName": "shqip (Shqipëri)"
},
{
"code": "ar-SA",
"name": "Arabic (Saudi Arabia)",
"nativeName": "العربية (المملكة العربية السعودية)"
},
{
"code": "hy-AM",
"name": "Armenian (Armenia)",
"nativeName": "հայերեն (Հայաստան)"
},
{
"code": "bn-BD",
"name": "Bangla (Bangladesh)",
"nativeName": "বাংলা (বাংলাদেশ)"
},
{
"code": "eu-ES",
"name": "Basque (Spain)",
"nativeName": "euskara (Espainia)"
},
{
"code": "bs-BA",
"name": "Bosnian (Bosnia & Herzegovina)",
"nativeName": "bosanski (Bosna i Hercegovina)"
},
{
"code": "bg-BG",
"name": "Bulgarian (Bulgaria)",
"nativeName": "български (България)"
},
{
"code": "ca-ES",
"name": "Catalan (Spain)",
"nativeName": "català (Espanya)"
},
{
"code": "zh-CN",
"name": "Chinese (China)",
"nativeName": "中文(中国)"
},
{
"code": "zh-TW",
"name": "Chinese (Taiwan)",
"nativeName": "中文(台灣)"
},
{
"code": "syc-SY",
"name": "Classical Syriac (Syria)",
"nativeName": "Classical Syriac (Syria)"
},
{
"code": "hr-HR",
"name": "Croatian (Croatia)",
"nativeName": "hrvatski (Hrvatska)"
},
{
"code": "cs-CZ",
"name": "Czech (Czechia)",
"nativeName": "čeština (Česko)"
},
{
"code": "da-DK",
"name": "Danish (Denmark)",
"nativeName": "dansk (Danmark)"
},
{
"code": "nl-NL",
"name": "Dutch (Netherlands)",
"nativeName": "Nederlands (Nederland)"
},
{
"code": "en-PT",
"name": "English (Portugal)",
"nativeName": "English (Portugal)"
},
{
"code": "en-US",
"name": "English (United States)",
"nativeName": "English (United States)"
},
{
"code": "eo-UY",
"name": "Esperanto (Uruguay)",
"nativeName": "Esperanto (Urugvajo)"
},
{
"code": "fil-PH",
"name": "Filipino (Philippines)",
"nativeName": "Filipino (Pilipinas)"
},
{
"code": "fi-FI",
"name": "Finnish (Finland)",
"nativeName": "suomi (Suomi)"
},
{
"code": "fr-FR",
"name": "French (France)",
"nativeName": "français (France)"
},
{
"code": "gl-ES",
"name": "Galician (Spain)",
"nativeName": "galego (España)"
},
{
"code": "de-DE",
"name": "German (Germany)",
"nativeName": "Deutsch (Deutschland)"
},
{
"code": "el-GR",
"name": "Greek (Greece)",
"nativeName": "Ελληνικά (Ελλάδα)"
},
{
"code": "he-IL",
"name": "Hebrew (Israel)",
"nativeName": "עברית (ישראל)"
},
{
"code": "hi-IN",
"name": "Hindi (India)",
"nativeName": "हिन्दी (भारत)"
},
{
"code": "hu-HU",
"name": "Hungarian (Hungary)",
"nativeName": "magyar (Magyarország)"
},
{
"code": "is-IS",
"name": "Icelandic (Iceland)",
"nativeName": "íslenska (Ísland)"
},
{
"code": "id-ID",
"name": "Indonesian (Indonesia)",
"nativeName": "Indonesia (Indonesia)"
},
{
"code": "ga-IE",
"name": "Irish (Ireland)",
"nativeName": "Gaeilge (Éire)"
},
{
"code": "it-IT",
"name": "Italian (Italy)",
"nativeName": "italiano (Italia)"
},
{
"code": "ja-JP",
"name": "Japanese (Japan)",
"nativeName": "日本語 (日本)"
},
{
"code": "tlh-AA",
"name": "Klingon (AA)",
"nativeName": "Klingon (AA)"
},
{
"code": "ko-KR",
"name": "Korean (South Korea)",
"nativeName": "한국어(대한민국)"
},
{
"code": "ku-TR",
"name": "Kurdish (Türkiye)",
"nativeName": "kurdî (kurmancî) (Tirkîye)"
},
{
"code": "lo-LA",
"name": "Lao (Laos)",
"nativeName": "ລາວ (ລາວ)"
},
{
"code": "la-LA",
"name": "Latin (Laos)",
"nativeName": "Latin (Laos)"
},
{
"code": "lv-LV",
"name": "Latvian (Latvia)",
"nativeName": "latviešu (Latvija)"
},
{
"code": "lt-LT",
"name": "Lithuanian (Lithuania)",
"nativeName": "lietuvių (Lietuva)"
},
{
"code": "lb-LU",
"name": "Luxembourgish (Luxembourg)",
"nativeName": "Lëtzebuergesch (Lëtzebuerg)"
},
{
"code": "mk-MK",
"name": "Macedonian (North Macedonia)",
"nativeName": "македонски (Северна Македонија)"
},
{
"code": "ms-MY",
"name": "Malay (Malaysia)",
"nativeName": "Melayu (Malaysia)"
},
{
"code": "me-ME",
"name": "me (Montenegro)",
"nativeName": "me (Montenegro)"
},
{
"code": "mn-MN",
"name": "Mongolian (Mongolia)",
"nativeName": "монгол (Монгол)"
},
{
"code": "ne-NP",
"name": "Nepali (Nepal)",
"nativeName": "नेपाली (नेपाल)"
},
{
"code": "no-NO",
"name": "Norwegian (Norway)",
"nativeName": "norsk (Norge)"
},
{
"code": "oc-FR",
"name": "Occitan (France)",
"nativeName": "occitan (França)"
},
{
"code": "ps-AF",
"name": "Pashto (Afghanistan)",
"nativeName": "پښتو (افغانستان)"
},
{
"code": "fa-IR",
"name": "Persian (Iran)",
"nativeName": "فارسی (ایران)"
},
{
"code": "pl-PL",
"name": "Polish (Poland)",
"nativeName": "polski (Polska)"
},
{
"code": "pt-PT",
"name": "Portuguese (Portugal)",
"nativeName": "português (Portugal)"
},
{
"code": "pa-IN",
"name": "Punjabi (India)",
"nativeName": "ਪੰਜਾਬੀ (ਭਾਰਤ)"
},
{
"code": "ro-RO",
"name": "Romanian (Romania)",
"nativeName": "română (România)"
},
{
"code": "ru-RU",
"name": "Russian (Russia)",
"nativeName": "русский (Россия)"
},
{
"code": "sc-IT",
"name": "Sardinian (Italy)",
"nativeName": "sardu (Itàlia)"
},
{
"code": "sco-GB",
"name": "Scots (United Kingdom)",
"nativeName": "Scots (United Kingdom)"
},
{
"code": "gd-GB",
"name": "Scottish Gaelic (United Kingdom)",
"nativeName": "Gàidhlig (An Rìoghachd Aonaichte)"
},
{
"code": "sr-SP",
"name": "Serbian (SP)",
"nativeName": "српски (SP)"
},
{
"code": "sk-SK",
"name": "Slovak (Slovakia)",
"nativeName": "slovenčina (Slovensko)"
},
{
"code": "sl-SI",
"name": "Slovenian (Slovenia)",
"nativeName": "slovenščina (Slovenija)"
},
{
"code": "es-ES",
"name": "Spanish (Spain)",
"nativeName": "español (España)"
},
{
"code": "sv-SE",
"name": "Swedish (Sweden)",
"nativeName": "svenska (Sverige)"
},
{
"code": "ta-IN",
"name": "Tamil (India)",
"nativeName": "தமிழ் (இந்தியா)"
},
{
"code": "th-TH",
"name": "Thai (Thailand)",
"nativeName": "ไทย (ไทย)"
},
{
"code": "bo-BT",
"name": "Tibetan (Bhutan)",
"nativeName": "བོད་སྐད་ (BT)"
},
{
"code": "tr-TR",
"name": "Turkish (Türkiye)",
"nativeName": "Türkçe (Türkiye)"
},
{
"code": "uk-UA",
"name": "Ukrainian (Ukraine)",
"nativeName": "українська (Україна)"
},
{
"code": "ug-CN",
"name": "Uyghur (China)",
"nativeName": "ئۇيغۇرچە (جۇڭگو)"
},
{
"code": "vec-IT",
"name": "Venetian (Italy)",
"nativeName": "veneto (Italia)"
},
{
"code": "vi-VN",
"name": "Vietnamese (Vietnam)",
"nativeName": "Tiếng Việt (Việt Nam)"
},
{
"code": "cy-GB",
"name": "Welsh (United Kingdom)",
"nativeName": "Cymraeg (Y Deyrnas Unedig)"
}
]

File diff suppressed because one or more lines are too long

21
public/css/app.css vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
.glide{box-sizing:border-box;position:relative;width:100%}.glide *{box-sizing:inherit}.glide__slides,.glide__track{overflow:hidden}.glide__slides{backface-visibility:hidden;display:flex;flex-wrap:nowrap;list-style:none;margin:0;padding:0;position:relative;touch-action:pan-Y;transform-style:preserve-3d;white-space:nowrap;width:100%;will-change:transform}.glide__slide,.glide__slides--dragging{-webkit-user-select:none;-moz-user-select:none;user-select:none}.glide__slide{-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;flex-shrink:0;height:100%;white-space:normal;width:100%}.glide__slide a{-webkit-user-drag:none;-webkit-user-select:none;user-select:none;-moz-user-select:none;-ms-user-select:none}.glide__arrows,.glide__bullets{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.glide--rtl{direction:rtl}.glide__arrow{background-color:transparent;border:2px solid hsla(0,0%,100%,.5);border-radius:4px;box-shadow:0 .25em .5em 0 rgba(0,0,0,.1);color:#fff;cursor:pointer;display:block;line-height:1;opacity:1;padding:9px 12px;position:absolute;text-shadow:0 .25em .5em rgba(0,0,0,.1);text-transform:uppercase;top:50%;transform:translateY(-50%);transition:opacity .15s ease,border .3s ease-in-out;z-index:2}.glide__arrow:focus{outline:none}.glide__arrow:hover{border-color:#fff}.glide__arrow--left{left:2em}.glide__arrow--right{right:2em}.glide__arrow--disabled{opacity:.33}.glide__bullets{bottom:2em;display:inline-flex;left:50%;list-style:none;position:absolute;transform:translateX(-50%);z-index:2}.glide__bullet{background-color:hsla(0,0%,100%,.5);border:2px solid transparent;border-radius:50%;box-shadow:0 .25em .5em 0 rgba(0,0,0,.1);cursor:pointer;height:9px;line-height:0;margin:0 .25em;padding:0;transition:all .3s ease-in-out;width:9px}.glide__bullet:focus{outline:none}.glide__bullet:focus,.glide__bullet:hover{background-color:hsla(0,0%,100%,.5);border:2px solid #fff}.glide__bullet--active{background-color:#fff}.glide--swipeable{cursor:grab;cursor:-webkit-grab}.glide--dragging{cursor:grabbing;cursor:-webkit-grabbing}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,21 +0,0 @@
/*!
=========================================================
* Argon Dashboard - v1.2.0
=========================================================
* Product Page: https://www.creative-tim.com/product/argon-dashboard
* Copyright 2020 Creative Tim (https://www.creative-tim.com)
* Licensed under MIT (https://github.com/creativetimofficial/argon-dashboard/blob/master/LICENSE.md)
* Coded by www.creative-tim.com
=========================================================
* The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
*/
/*! @source http://purl.eligrey.com/github/canvas-toBlob.js/blob/master/canvas-toBlob.js */
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */

File diff suppressed because one or more lines are too long

2
public/js/app.js vendored

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
/*! @source http://purl.eligrey.com/github/canvas-toBlob.js/blob/master/canvas-toBlob.js */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
"use strict";(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[4774],{92182(e,t,o){o.r(t);var a=o(62893),l=o(63288),n=o(32252),r=o.n(n),s=o(65201),d=o.n(s),c=o(24786),i=o(57742),u=o.n(i),f=o(89829),h=o.n(f),m=(o(18650),o(80158),o(74692));function p(e){return p="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},p(e)}window.Vue=a.default,a.default.use(h()),a.default.use(u()),a.default.use(l.default),a.default.use(r()),a.default.use(d()),a.default.use(c.default,{name:"Timeago",locale:"en"}),pixelfed.readmore=function(){m(".read-more").each(function(e,t){var o=m(this),a=o.attr("data-readmore");"undefined"!==p(a)&&!1!==a||o.readmore({collapsedHeight:45,heightMargin:48,moreLink:'<a href="#" class="d-block small font-weight-bold text-dark text-center">Show more</a>',lessLink:'<a href="#" class="d-block small font-weight-bold text-dark text-center">Show less</a>'})})};try{document.createEvent("TouchEvent"),m("body").addClass("touch")}catch(e){}window.filesize=o(91139),m('[data-toggle="tooltip"]').tooltip();console.log("%cStop!","color:red; font-size:60px; font-weight: bold; -webkit-text-stroke: 1px black;"),console.log('%cThis is a browser feature intended for developers. If someone told you to copy and paste something here to enable a Pixelfed feature or "hack" someone\'s account, it is a scam and will give them access to your Pixelfed account.',"font-size: 18px;")}},e=>{e.O(0,[3660],()=>{return t=92182,e(e.s=t);var t});e.O()}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
"use strict";(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[7413],{94680(a,t,e){e.r(t),e.d(t,{default:()=>s});const s={components:{drawer:e(5787).default}}},50371(a,t,e){e.r(t),e.d(t,{default:()=>s});const s={data:function(){return{user:window._sharedData.user}}}},64513(a,t,e){e.r(t),e.d(t,{render:()=>s,staticRenderFns:()=>n});var s=function(){var a=this,t=a._self._c;return t("div",{staticClass:"container d-flex justify-content-center"},[a._m(0),a._v(" "),t("drawer")],1)},n=[function(){var a=this,t=a._self._c;return t("div",{staticClass:"error-page py-5 my-5",staticStyle:{"max-width":"450px"}},[t("h3",{staticClass:"font-weight-bold"},[a._v("404   Page Not Found")]),a._v(" "),t("p",{staticClass:"lead"},[a._v("The page you are trying to view is not available")]),a._v(" "),t("div",{staticClass:"text-muted"},[t("p",{staticClass:"mb-1"},[a._v("This can happen for a few reasons:")]),a._v(" "),t("ul",[t("li",[a._v("The url is invalid or has a typo")]),a._v(" "),t("li",[a._v("The page has been flagged for review by our automated abuse detection systems")]),a._v(" "),t("li",[a._v("The content may have been deleted")]),a._v(" "),t("li",[a._v("You do not have permission to view this content")])])])])}]},69831(a,t,e){e.r(t),e.d(t,{render:()=>s,staticRenderFns:()=>n});var s=function(){var a=this,t=a._self._c;return t("div",{staticClass:"app-drawer-component"},[t("div",{staticClass:"mobile-footer-spacer d-block d-sm-none mt-5"}),a._v(" "),t("div",{staticClass:"mobile-footer d-block d-sm-none fixed-bottom"},[t("div",{staticClass:"card card-body rounded-0 px-0 pt-2 pb-3 box-shadow",staticStyle:{"border-top":"1px solid var(--border-color)"}},[t("ul",{staticClass:"nav nav-pills nav-fill d-flex align-items-middle"},[t("li",{staticClass:"nav-item"},[t("router-link",{staticClass:"nav-link text-dark",attrs:{to:"/i/web"}},[t("p",[t("i",{staticClass:"far fa-home fa-lg"})]),a._v(" "),t("p",{staticClass:"nav-link-label"},[t("span",[a._v("Home")])])])],1),a._v(" "),t("li",{staticClass:"nav-item"},[t("router-link",{staticClass:"nav-link text-dark",attrs:{to:"/i/web/timeline/local"}},[t("p",[t("i",{staticClass:"far fa-stream fa-lg"})]),a._v(" "),t("p",{staticClass:"nav-link-label"},[t("span",[a._v("Local")])])])],1),a._v(" "),t("li",{staticClass:"nav-item"},[t("router-link",{staticClass:"nav-link text-dark",attrs:{to:"/i/web/compose"}},[t("p",[t("i",{staticClass:"far fa-plus-circle fa-lg"})]),a._v(" "),t("p",{staticClass:"nav-link-label"},[t("span",[a._v("New")])])])],1),a._v(" "),t("li",{staticClass:"nav-item"},[t("router-link",{staticClass:"nav-link text-dark",attrs:{to:"/i/web/notifications"}},[t("p",[t("i",{staticClass:"far fa-bell fa-lg"})]),a._v(" "),t("p",{staticClass:"nav-link-label"},[t("span",[a._v("Alerts")])])])],1),a._v(" "),t("li",{staticClass:"nav-item"},[t("router-link",{staticClass:"nav-link text-dark",attrs:{to:"/i/web/profile/"+a.user.id}},[t("p",[t("i",{staticClass:"far fa-user fa-lg"})]),a._v(" "),t("p",{staticClass:"nav-link-label"},[t("span",[a._v("Profile")])])])],1)])])])])},n=[]},39005(a,t,e){e.r(t),e.d(t,{default:()=>l});var s=e(76798),n=e.n(s)()(function(a){return a[1]});n.push([a.id,".app-drawer-component .nav-link{padding:.5rem .1rem}.app-drawer-component .nav-link.active{background-color:transparent}.app-drawer-component .nav-link.router-link-exact-active{background-color:transparent;color:var(--primary)!important}.app-drawer-component .nav-link p{margin-bottom:0}.app-drawer-component .nav-link-label{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;font-size:10px;font-weight:700;margin-top:0;opacity:.6;text-transform:uppercase}",""]);const l=n},74688(a,t,e){e.r(t),e.d(t,{default:()=>r});var s=e(85072),n=e.n(s),l=e(39005),i={insert:"head",singleton:!1};n()(l.default,i);const r=l.default.locals||{}},13978(a,t,e){e.r(t),e.d(t,{default:()=>i});var s=e(72198),n=e(10117),l={};for(const a in n)"default"!==a&&(l[a]=()=>n[a]);e.d(t,l);const i=(0,e(14486).default)(n.default,s.render,s.staticRenderFns,!1,null,null,null).exports},5787(a,t,e){e.r(t),e.d(t,{default:()=>i});var s=e(16286),n=e(80260),l={};for(const a in n)"default"!==a&&(l[a]=()=>n[a]);e.d(t,l);e(89069);const i=(0,e(14486).default)(n.default,s.render,s.staticRenderFns,!1,null,null,null).exports},10117(a,t,e){e.r(t),e.d(t,{default:()=>l});var s=e(94680),n={};for(const a in s)"default"!==a&&(n[a]=()=>s[a]);e.d(t,n);const l=s.default},80260(a,t,e){e.r(t),e.d(t,{default:()=>l});var s=e(50371),n={};for(const a in s)"default"!==a&&(n[a]=()=>s[a]);e.d(t,n);const l=s.default},72198(a,t,e){e.r(t);var s=e(64513),n={};for(const a in s)"default"!==a&&(n[a]=()=>s[a]);e.d(t,n)},16286(a,t,e){e.r(t);var s=e(69831),n={};for(const a in s)"default"!==a&&(n[a]=()=>s[a]);e.d(t,n)},89069(a,t,e){e.r(t);var s=e(74688),n={};for(const a in s)"default"!==a&&(n[a]=()=>s[a]);e.d(t,n)}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
"use strict";(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[2822],{96140(t,e,a){a.r(e),a.d(e,{default:()=>d});var o=a(26679),n=a(16080),r=a(49139);const d={components:{sidebar:o.default,loader:n.default,"create-group":r.default},data:function(){return{loaded:!1,loadTimeout:void 0}},created:function(){var t=this;this.loadTimeout=setTimeout(function(){t.loaded=!0},1e3)},beforeUnmount:function(){clearTimeout(this.loadTimeout)}}},42360(t,e,a){a.r(e),a.d(e,{render:()=>o,staticRenderFns:()=>n});var o=function(){var t=this._self._c;return t("div",{staticClass:"group-notifications-component"},[t("div",{staticClass:"row border-bottom m-0 p-0"},[t("sidebar"),this._v(" "),t("create-group")],1)])},n=[]},12712(t,e,a){a.r(e),a.d(e,{default:()=>r});var o=a(76798),n=a.n(o)()(function(t){return t[1]});n.push([t.id,".group-notifications-component[data-v-a4ffe9ee]{font-family:var(--font-family-sans-serif)}.group-notifications-component .jumbotron[data-v-a4ffe9ee]{background-color:#fff;border-radius:0}",""]);const r=n},7685(t,e,a){a.r(e),a.d(e,{default:()=>f});var o=a(85072),n=a.n(o),r=a(12712),d={insert:"head",singleton:!1};n()(r.default,d);const f=r.default.locals||{}},22500(t,e,a){a.r(e),a.d(e,{default:()=>d});var o=a(47393),n=a(45607),r={};for(const t in n)"default"!==t&&(r[t]=()=>n[t]);a.d(e,r);a(61784);const d=(0,a(14486).default)(n.default,o.render,o.staticRenderFns,!1,null,"a4ffe9ee",null).exports},45607(t,e,a){a.r(e),a.d(e,{default:()=>r});var o=a(96140),n={};for(const t in o)"default"!==t&&(n[t]=()=>o[t]);a.d(e,n);const r=o.default},47393(t,e,a){a.r(e);var o=a(42360),n={};for(const t in o)"default"!==t&&(n[t]=()=>o[t]);a.d(e,n)},61784(t,e,a){a.r(e);var o=a(7685),n={};for(const t in o)"default"!==t&&(n[t]=()=>o[t]);a.d(e,n)}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
"use strict";(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[7342],{14158(e,t,d){d.r(t),d.d(t,{default:()=>a});var r=d(71307),s=d(26679);const a={props:{gid:{type:String},sid:{type:String}},components:{"group-feed":r.default,sidebar:s.default}}},14794(e,t,d){d.r(t),d.d(t,{render:()=>r,staticRenderFns:()=>s});var r=function(){var e=this,t=e._self._c;return t("div",{staticClass:"group-status-permalink-component"},[t("div",{staticClass:"row border-bottom m-0 p-0"},[t("sidebar"),e._v(" "),t("div",{staticClass:"col-12 col-md-9 px-md-0"},[t("group-feed",{attrs:{"group-id":e.gid,permalinkMode:!0,permalinkId:e.sid}})],1)],1)])},s=[]},16390(e,t,d){d.r(t),d.d(t,{default:()=>n});var r=d(41759),s=d(90805),a={};for(const e in s)"default"!==e&&(a[e]=()=>s[e]);d.d(t,a);const n=(0,d(14486).default)(s.default,r.render,r.staticRenderFns,!1,null,null,null).exports},90805(e,t,d){d.r(t),d.d(t,{default:()=>a});var r=d(14158),s={};for(const e in r)"default"!==e&&(s[e]=()=>r[e]);d.d(t,s);const a=r.default},41759(e,t,d){d.r(t);var r=d(14794),s={};for(const e in r)"default"!==e&&(s[e]=()=>r[e]);d.d(t,s)}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
/*! @source http://purl.eligrey.com/github/canvas-toBlob.js/blob/master/canvas-toBlob.js */

@ -1 +0,0 @@
(()=>{"use strict";var e,r,a,o={},t={};function n(e){var r=t[e];if(void 0!==r)return r.exports;var a=t[e]={id:e,loaded:!1,exports:{}};return o[e].call(a.exports,a,a.exports,n),a.loaded=!0,a.exports}n.m=o,e=[],n.O=(r,a,o,t)=>{if(!a){var c=1/0;for(f=0;f<e.length;f++){for(var[a,o,t]=e[f],d=!0,s=0;s<a.length;s++)(!1&t||c>=t)&&Object.keys(n.O).every(e=>n.O[e](a[s]))?a.splice(s--,1):(d=!1,t<c&&(c=t));if(d){e.splice(f--,1);var i=o();void 0!==i&&(r=i)}}return r}t=t||0;for(var f=e.length;f>0&&e[f-1][2]>t;f--)e[f]=e[f-1];e[f]=[a,o,t]},n.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return n.d(r,{a:r}),r},n.d=(e,r)=>{for(var a in r)n.o(r,a)&&!n.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:r[a]})},n.f={},n.e=e=>Promise.all(Object.keys(n.f).reduce((r,a)=>(n.f[a](e,r),r),[])),n.u=e=>"js/"+{529:"groups-page",1179:"daci.chunk",1240:"discover~myhashtags.chunk",1645:"profile~following.bundle",2156:"dms.chunk",2822:"group.create",2966:"discover~hashtag.bundle",3688:"discover~serverfeed.chunk",4951:"home.chunk",6250:"discover~settings.chunk",6438:"groups-page-media",6535:"discover.chunk",6740:"discover~memories.chunk",6791:"groups-page-members",7206:"groups-page-topics",7342:"groups-post",7399:"dms~message.chunk",7413:"error404.bundle",7521:"discover~findfriends.chunk",7744:"notifications.chunk",8087:"profile.chunk",8119:"i18n.bundle",8257:"groups-page-about",8408:"post.chunk",8977:"profile~followers.bundle",9124:"compose.chunk",9231:"groups-profile",9919:"changelog.bundle"}[e]+"."+{529:"2826b7d8bc08bf22",1179:"f8aac5154bf66d16",1240:"5baba12a740731ad",1645:"107cdd43840f4562",2156:"13a1bf15db918fb7",2822:"82affc4a7b5983b0",2966:"8118feb3b8e0cfc6",3688:"b7b3509e7a57a7ed",4951:"c6aec62e9c29baee",6250:"3605acd0cdb83c8c",6438:"f3be2d8b0ca59cdf",6535:"0a3c5b36cedbad42",6740:"1f80b1535ac7fd5f",6791:"a2d12bc765ad0f38",7206:"7bee36f3edc0de92",7342:"aca9f85bd8b36f70",7399:"51e1ba0ec445bf6f",7413:"c408e3fce0f80bcb",7521:"29989fbbf893aae9",7744:"d2559e00a1a30220",8087:"974a5385adcb4e42",8119:"6e465f3e27d38056",8257:"dfb2744b2a28d4c5",8408:"e603077eff2eefbc",8977:"7ad5ad69f3e9fb0f",9124:"cb3781f6e49426e4",9231:"924132e02f73d082",9919:"f97c6c2fdd203b90"}[e]+".js",n.miniCssF=e=>({2305:"css/portfolio",2540:"css/landing",3364:"css/admin",4370:"css/profile",6952:"css/appdark",8252:"css/app",8759:"css/spa"}[e]+".css"),n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),r={},a="pixelfed:",n.l=(e,o,t,c)=>{if(r[e])r[e].push(o);else{var d,s;if(void 0!==t)for(var i=document.getElementsByTagName("script"),f=0;f<i.length;f++){var l=i[f];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==a+t){d=l;break}}d||(s=!0,(d=document.createElement("script")).charset="utf-8",n.nc&&d.setAttribute("nonce",n.nc),d.setAttribute("data-webpack",a+t),d.src=e),r[e]=[o];var u=(a,o)=>{d.onerror=d.onload=null,clearTimeout(b);var t=r[e];if(delete r[e],d.parentNode&&d.parentNode.removeChild(d),t&&t.forEach(e=>e(o)),a)return a(o)},b=setTimeout(u.bind(null,void 0,{type:"timeout",target:d}),12e4);d.onerror=u.bind(null,d.onerror),d.onload=u.bind(null,d.onload),s&&document.head.appendChild(d)}},n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),n.p="/",(()=>{var e={461:0,6952:0,8252:0,2305:0,3364:0,2540:0,4370:0,8759:0};n.f.j=(r,a)=>{var o=n.o(e,r)?e[r]:void 0;if(0!==o)if(o)a.push(o[2]);else if(/^((69|82)52|2305|2540|3364|4370|461|8759)$/.test(r))e[r]=0;else{var t=new Promise((a,t)=>o=e[r]=[a,t]);a.push(o[2]=t);var c=n.p+n.u(r),d=new Error;n.l(c,a=>{if(n.o(e,r)&&(0!==(o=e[r])&&(e[r]=void 0),o)){var t=a&&("load"===a.type?"missing":a.type),c=a&&a.target&&a.target.src;d.message="Loading chunk "+r+" failed.\n("+t+": "+c+")",d.name="ChunkLoadError",d.type=t,d.request=c,o[1](d)}},"chunk-"+r,r)}},n.O.j=r=>0===e[r];var r=(r,a)=>{var o,t,[c,d,s]=a,i=0;if(c.some(r=>0!==e[r])){for(o in d)n.o(d,o)&&(n.m[o]=d[o]);if(s)var f=s(n)}for(r&&r(a);i<c.length;i++)t=c[i],n.o(e,t)&&e[t]&&e[t][0](),e[t]=0;return n.O(f)},a=self.webpackChunkpixelfed=self.webpackChunkpixelfed||[];a.forEach(r.bind(null,0)),a.push=r.bind(null,a.push.bind(a))})(),n.nc=void 0})();

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */

@ -1 +0,0 @@
(self.webpackChunkpixelfed=self.webpackChunkpixelfed||[]).push([[9091],{81831(t,s,e){"use strict";e.r(s),e.d(s,{default:()=>a});const a={data:function(){return{loaded:!1,showLoadMore:!0,profiles:[],page:1}},beforeMount:function(){this.fetchData()},methods:{fetchData:function(){var t=this;axios.get("/api/pixelfed/v2/discover/profiles",{params:{page:this.page}}).then(function(s){if(0==s.data.length)return t.showLoadMore=!1,void(t.loaded=!0);t.profiles=s.data,t.showLoadMore=8==t.profiles.length,t.loaded=!0})},prettyCount:function(t){return App.util.format.count(t)},loadMore:function(){this.loaded=!1,this.page++,this.fetchData()},thumbUrl:function(t){return t.media_attachments[0].url}}}},31181(t,s,e){"use strict";e.r(s),e.d(s,{render:()=>a,staticRenderFns:()=>r});var a=function(){var t=this,s=t._self._c;return s("div",[s("div",{staticClass:"col-12"},[s("p",{staticClass:"font-weight-bold text-lighter text-uppercase"},[t._v("Profiles Directory")]),t._v(" "),t.loaded?s("div",{},[s("div",{staticClass:"row"},[t._l(t.profiles,function(e,a){return s("div",{staticClass:"col-12 col-md-6 p-1"},[s("div",{staticClass:"card card-body border shadow-none py-2"},[s("div",{staticClass:"media"},[s("a",{attrs:{href:e.url}},[s("img",{staticClass:"rounded-circle border mr-3",attrs:{src:e.avatar,alt:"...",width:"40px",height:"40px"}})]),t._v(" "),s("div",{staticClass:"media-body"},[s("p",{staticClass:"mt-0 mb-0 font-weight-bold"},[s("a",{staticClass:"text-dark",attrs:{href:e.url}},[t._v(t._s(e.username))])]),t._v(" "),s("p",{staticClass:"mb-1 small text-lighter d-flex justify-content-between font-weight-bold"},[s("span",[s("span",[t._v(t._s(t.prettyCount(e.statuses_count)))]),t._v(" POSTS\n\t\t\t\t\t\t\t\t\t")]),t._v(" "),s("span",[s("span",[t._v(t._s(t.prettyCount(e.followers_count)))]),t._v(" FOLLOWERS\n\t\t\t\t\t\t\t\t\t")])]),t._v(" "),s("p",{staticClass:"mb-1"},t._l(e.posts,function(e,a){return s("span",{key:"profile_posts_"+a,staticClass:"shadow-sm"},[s("a",{staticClass:"text-decoration-none mr-1",attrs:{href:e.url}},[s("img",{staticClass:"border rounded",attrs:{src:t.thumbUrl(e),width:"62.3px",height:"62.3px"}})])])}),0)])])])])}),t._v(" "),t.showLoadMore?s("div",{staticClass:"col-12"},[s("p",{staticClass:"text-center mb-0 pt-3"},[s("button",{staticClass:"btn btn-outline-secondary btn-sm px-4 py-1 font-weight-bold",on:{click:function(s){return t.loadMore()}}},[t._v("Load More")])])]):t._e()],2)]):s("div",[t._m(0)])])])},r=[function(){var t=this._self._c;return t("div",{staticClass:"row"},[t("div",{staticClass:"col-12 d-flex justify-content-center align-items-center"},[t("div",{staticClass:"spinner-border",attrs:{role:"status"}},[t("span",{staticClass:"sr-only"},[this._v("Loading...")])])])])}]},43199(t,s,e){Vue.component("profile-directory",e(22815).default)},22815(t,s,e){"use strict";e.r(s),e.d(s,{default:()=>i});var a=e(16464),r=e(42072),o={};for(const t in r)"default"!==t&&(o[t]=()=>r[t]);e.d(s,o);const i=(0,e(14486).default)(r.default,a.render,a.staticRenderFns,!1,null,"7b3eea1c",null).exports},42072(t,s,e){"use strict";e.r(s),e.d(s,{default:()=>o});var a=e(81831),r={};for(const t in a)"default"!==t&&(r[t]=()=>a[t]);e.d(s,r);const o=a.default},16464(t,s,e){"use strict";e.r(s);var a=e(31181),r={};for(const t in a)"default"!==t&&(r[t]=()=>a[t]);e.d(s,r)}},t=>{t.O(0,[3660],()=>{return s=43199,t(t.s=s);var s});t.O()}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
public/js/spa.js vendored

File diff suppressed because one or more lines are too long

@ -1 +0,0 @@
/*! @source http://purl.eligrey.com/github/canvas-toBlob.js/blob/master/canvas-toBlob.js */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1,217 +0,0 @@
/* @license twgl.js 5.5.4 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
Available via the MIT license.
see: http://github.com/greggman/twgl.js for details */
/*!
* Bootstrap v4.6.2 (https://getbootstrap.com/)
* Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
/*!
* @preserve
*
* Readmore.js jQuery plugin
* Author: @jed_foster
* Project home: http://jedfoster.github.io/Readmore.js
* Licensed under the MIT license
*
* Debounce function from http://davidwalsh.name/javascript-debounce-function
*/
/*!
* BootstrapVue Icons, generated from Bootstrap Icons 1.5.0
*
* @link https://icons.getbootstrap.com/
* @license MIT
* https://github.com/twbs/icons/blob/master/LICENSE.md
*/
/*!
* Chart.js v2.9.4
* https://www.chartjs.org
* (c) 2020 Chart.js Contributors
* Released under the MIT License
*/
/*!
* Cropper.js v1.6.2
* https://fengyuanchen.github.io/cropperjs
*
* Copyright 2015-present Chen Fengyuan
* Released under the MIT license
*
* Date: 2024-04-21T07:43:05.335Z
*/
/*!
* Glide.js v3.7.1
* (c) 2013-2024 Jędrzej Chałubek (https://github.com/jedrzejchalubek/)
* Released under the MIT License.
*/
/*!
* JavaScript Cookie v2.2.1
* https://github.com/js-cookie/js-cookie
*
* Copyright 2006, 2015 Klaus Hartl & Fagner Brack
* Released under the MIT license
*/
/*!
* Scroll Lock v3.1.3
* https://github.com/MohammadYounes/jquery-scrollLock
*
* Copyright (c) 2017 Mohammad Younes
* Licensed under GPL 3.
*/
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <http://feross.org>
* @license MIT
*/
/*!
* Vue.js v2.7.16
* (c) 2014-2023 Evan You
* Released under the MIT License.
*/
/*!
* jQuery JavaScript Library v3.7.1
* https://jquery.com/
*
* Copyright OpenJS Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2023-08-28T13:37Z
*/
/*!
* twitter-text 2.0.5
*
* Copyright 2012 Twitter, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this work except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*/
/*!
* vue-carousel v0.18.0-alpha
* (c) 2019 todd.beauchamp@ssense.com
* https://github.com/ssense/vue-carousel#readme
*/
/*!
* vue-i18n v8.28.2
* (c) 2022 kazuya kawaguchi
* Released under the MIT License.
*/
/*!
* vue-infinite-loading v2.4.5
* (c) 2016-2020 PeachScript
* MIT License
*/
/*!
* vue-masonry-css v1.0.3
* https://github.com/paulcollett/vue-masonry-css
* Released under the MIT License.
*/
/*!
* vuex v3.6.2
* (c) 2021 Evan You
* @license MIT
*/
/*!
* portal-vue © Thorsten Lünborg, 2019
*
* Version: 2.1.7
*
* LICENCE: MIT
*
* https://github.com/linusborg/portal-vue
*
*/
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
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
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
/*! Axios v1.16.0 Copyright (c) 2026 Matt Zabriskie and contributors */
/*! https://mths.be/punycode v1.4.1 by @mathias */
/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh <https://feross.org/opensource> */
/**
* vue-class-component v7.2.3
* (c) 2015-present Evan You
* @license MIT
*/
/**
* @license
* Lodash <https://lodash.com/>
* Copyright OpenJS Foundation and other contributors <https://openjsf.org/>
* Released under MIT license <https://lodash.com/license>
* Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
* Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
*/
/**
* filesize
*
* @copyright 2018 Jason Mulligan <jason.mulligan@avoidwork.com>
* @license BSD-3-Clause
* @version 3.6.1
*/
/**!
* @fileOverview Kickass library to create and place poppers near their reference elements.
* @version 1.16.1
* @license
* Copyright (c) 2016 Federico Zivolo 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.
*/
//! moment.js
//! moment.js locale configuration

@ -1,69 +1 @@
{
"/js/app.js": "/js/app.js?id=0ecf383fbd54b342c6b4ff9c070aacdf",
"/js/activity.js": "/js/activity.js?id=5ff0d41f0c063205e2fd27b7d3a89d40",
"/js/components.js": "/js/components.js?id=6e1d1eba5b3a8d160ccd2b7203f29deb",
"/js/discover.js": "/js/discover.js?id=952469fb673a19bf07f5640d8c31d6a8",
"/js/profile.js": "/js/profile.js?id=312cf6468e9d0af78862d67e0f8d3191",
"/js/status.js": "/js/status.js?id=2724a2c606c65bef654dece8a9fa5a55",
"/js/timeline.js": "/js/timeline.js?id=393bf15f554dedd8a123beed437207f0",
"/js/compose.js": "/js/compose.js?id=b8925ebc81ddce4dea0689ab2b27838f",
"/js/compose-classic.js": "/js/compose-classic.js?id=0853bca9b63686fc48346ccfac913c71",
"/js/search.js": "/js/search.js?id=9dfe84a2449a214a2b0e6dd5b327e07d",
"/js/developers.js": "/js/developers.js?id=7fd410ff1a04441c403157314ba81d38",
"/js/hashtag.js": "/js/hashtag.js?id=e379f9a05a735bd1c3b867573e6e7b78",
"/js/collectioncompose.js": "/js/collectioncompose.js?id=8cc4606d6008b6a8c013462135ee958a",
"/js/collections.js": "/js/collections.js?id=750737fae261565e19f49c4d373fcd83",
"/js/profile-directory.js": "/js/profile-directory.js?id=316f0746cc50f5e5bbb790f11494c6ec",
"/js/story-compose.js": "/js/story-compose.js?id=53bba3b9d435cbd7a1689fc07f15439c",
"/js/direct.js": "/js/direct.js?id=7d716b0453d4ad885cb600c0cef953aa",
"/js/admin.js": "/js/admin.js?id=97ce5c49b0cfe0718451e4f6d960fcd5",
"/js/spa.js": "/js/spa.js?id=7168547ba89a8a6468484b1b8ffc1e53",
"/js/stories.js": "/js/stories.js?id=8565c19bc915466ed5dd98076cfa3f04",
"/js/portfolio.js": "/js/portfolio.js?id=2dfd35982335ad4eca174b70bc0e9bb4",
"/js/account-import.js": "/js/account-import.js?id=fb9b306bcf2293dbb12c37e6629229db",
"/js/admin_invite.js": "/js/admin_invite.js?id=200302f8562e57371a89a533d8b06f46",
"/js/landing.js": "/js/landing.js?id=4b260b8607061ce6ba8a5e1a524b2d1a",
"/js/remote_auth.js": "/js/remote_auth.js?id=c3f3d3f486795671a8eb9074893f99b8",
"/js/groups.js": "/js/groups.js?id=9a739fa2f9b369621756149bf3aa51af",
"/js/group-status.js": "/js/group-status.js?id=0f6c426058a144597e242f70f7bc6790",
"/js/group-topic-feed.js": "/js/group-topic-feed.js?id=df12a95f1d1ba9c229ab921761fcd5ec",
"/js/custom_filters.js": "/js/custom_filters.js?id=f633fb6090aa4906678dc37b41f9f62d",
"/js/settings.js": "/js/settings.js?id=1c84db4544ac1c55d2cea01e88ec4b1e",
"/js/manifest.js": "/js/manifest.js?id=536344f2412e900abf2d0f91af8f5db1",
"/js/home.chunk.c6aec62e9c29baee.js": "/js/home.chunk.c6aec62e9c29baee.js?id=95295a5b8bfef3a40a3b8c1897afdb90",
"/js/compose.chunk.cb3781f6e49426e4.js": "/js/compose.chunk.cb3781f6e49426e4.js?id=6b6a69634e352106f17301a08df66b24",
"/js/post.chunk.e603077eff2eefbc.js": "/js/post.chunk.e603077eff2eefbc.js?id=da82a7fa4d3dc629809210e88f14630e",
"/js/profile.chunk.974a5385adcb4e42.js": "/js/profile.chunk.974a5385adcb4e42.js?id=589663ccb647d9922e1e97cf30cee310",
"/js/discover~memories.chunk.1f80b1535ac7fd5f.js": "/js/discover~memories.chunk.1f80b1535ac7fd5f.js?id=18d689e4e22a0a4f12fb13b7a97d8c55",
"/js/discover~myhashtags.chunk.5baba12a740731ad.js": "/js/discover~myhashtags.chunk.5baba12a740731ad.js?id=fd0d5cd07a12a9332c05f9f16a8e2ba4",
"/js/daci.chunk.f8aac5154bf66d16.js": "/js/daci.chunk.f8aac5154bf66d16.js?id=2f2d42caba74d205b2b5dc4d9472796c",
"/js/discover~findfriends.chunk.29989fbbf893aae9.js": "/js/discover~findfriends.chunk.29989fbbf893aae9.js?id=79584a109654c0debedfc85e2147802b",
"/js/discover~serverfeed.chunk.b7b3509e7a57a7ed.js": "/js/discover~serverfeed.chunk.b7b3509e7a57a7ed.js?id=0062d6b28cd7a32893a265a4d9186269",
"/js/discover~settings.chunk.3605acd0cdb83c8c.js": "/js/discover~settings.chunk.3605acd0cdb83c8c.js?id=4be8a4614f1e4824a64ba71f592aa4cf",
"/js/discover.chunk.0a3c5b36cedbad42.js": "/js/discover.chunk.0a3c5b36cedbad42.js?id=6c31483e022bef32ff56e52437739e4a",
"/js/notifications.chunk.d2559e00a1a30220.js": "/js/notifications.chunk.d2559e00a1a30220.js?id=c092e381a8385636bd0f91146c6c9774",
"/js/dms.chunk.13a1bf15db918fb7.js": "/js/dms.chunk.13a1bf15db918fb7.js?id=eaf6ffcb3e784cc7d16c4bbeadcd4d64",
"/js/dms~message.chunk.51e1ba0ec445bf6f.js": "/js/dms~message.chunk.51e1ba0ec445bf6f.js?id=de8515e5ae537d09d344f47b21ea0014",
"/js/profile~followers.bundle.7ad5ad69f3e9fb0f.js": "/js/profile~followers.bundle.7ad5ad69f3e9fb0f.js?id=4ea5c00db8e58079d5d4b7803432dacb",
"/js/profile~following.bundle.107cdd43840f4562.js": "/js/profile~following.bundle.107cdd43840f4562.js?id=8f733ca92071a454d1faab0a7c32e241",
"/js/discover~hashtag.bundle.8118feb3b8e0cfc6.js": "/js/discover~hashtag.bundle.8118feb3b8e0cfc6.js?id=c9b62b7a6820a34066bdc6e9f9ed5650",
"/js/error404.bundle.c408e3fce0f80bcb.js": "/js/error404.bundle.c408e3fce0f80bcb.js?id=c416458981590b2ebe9fb35f5d3d1a6f",
"/js/i18n.bundle.6e465f3e27d38056.js": "/js/i18n.bundle.6e465f3e27d38056.js?id=a86626dc9e399d455fd5c1fda4bec041",
"/js/changelog.bundle.f97c6c2fdd203b90.js": "/js/changelog.bundle.f97c6c2fdd203b90.js?id=6e5a3b62042ec170dd0bad0550176579",
"/js/group.create.82affc4a7b5983b0.js": "/js/group.create.82affc4a7b5983b0.js?id=ca0206e68df7b23579b81980438a62c5",
"/js/groups-post.aca9f85bd8b36f70.js": "/js/groups-post.aca9f85bd8b36f70.js?id=3cd0db8989aff31543a2c0d353f7d9cf",
"/js/groups-profile.924132e02f73d082.js": "/js/groups-profile.924132e02f73d082.js?id=1849da0769f0aa6ecb5b8c21b9e8d091",
"/js/groups-page-about.dfb2744b2a28d4c5.js": "/js/groups-page-about.dfb2744b2a28d4c5.js?id=105be31c6d3b3d3940ff5e8c2d0377f7",
"/js/groups-page-topics.7bee36f3edc0de92.js": "/js/groups-page-topics.7bee36f3edc0de92.js?id=ca1b53addb70b67589443caef6b1a086",
"/js/groups-page-members.a2d12bc765ad0f38.js": "/js/groups-page-members.a2d12bc765ad0f38.js?id=472c7d452a6f5452a9563f06564df141",
"/js/groups-page-media.f3be2d8b0ca59cdf.js": "/js/groups-page-media.f3be2d8b0ca59cdf.js?id=b72c7cdcc099882e26408beaa042b758",
"/js/groups-page.2826b7d8bc08bf22.js": "/js/groups-page.2826b7d8bc08bf22.js?id=89b924a749d18a4c5b097a3bc9775bdb",
"/css/appdark.css": "/css/appdark.css?id=0618e5097047d418a15a992378815378",
"/css/app.css": "/css/app.css?id=269aa731b2120cc1193ad1f9f64e2748",
"/css/portfolio.css": "/css/portfolio.css?id=d98e354f173c6a8b729626384dceaa90",
"/css/admin.css": "/css/admin.css?id=20cdb9cce61b0e1bd9fb1aad30efcd2f",
"/css/landing.css": "/css/landing.css?id=fb78389492f56a927d3d9bbb3ebd8204",
"/css/profile.css": "/css/profile.css?id=ae4f5db9bb1a89db2ae293d6bde812e3",
"/css/spa.css": "/css/spa.css?id=041aed9a146db0e74b2cfe3ad8eaf96c",
"/js/vendor.js": "/js/vendor.js?id=0691fd9b9b123f067d151210d301bee2"
}
{}

@ -18,9 +18,9 @@
<div class="locale-changer form-group">
<label>Language</label>
<select class="form-control" v-model="locale">
<option v-for="(lang, i) in langs" :key="`Lang${i}`" :value="lang">
{{ fullName(lang) }}
<template v-if="fullName(lang) != localeName(lang)"> · {{ localeName(lang) }}</template>
<option v-for="lang in langs" :key="lang.code" :value="lang.code">
{{ lang.name }}
<template v-if="lang.nativeName && lang.nativeName != lang.name"> · {{ lang.nativeName }}</template>
</option>
</select>
</div>
@ -48,23 +48,31 @@
isLoaded: false,
profile: undefined,
locale: 'en-US',
// Populated from loaded i18n locales in mounted() so the list
// always matches the lang/ folders (locale codes, e.g. de-DE).
// Loaded from the static locales manifest (/_lang/locales.json)
// generated by `php artisan i18n:export`. Objects of the shape
// { code, name, nativeName }, pre-sorted by display name.
langs: []
}
},
mounted() {
this.profile = window._sharedData.user;
this.isLoaded = true;
this.locale = this.$i18n.locale;
this.langs = this.$i18n.availableLocales.slice().sort();
// [i18n-debug] remove after diagnosis.
console.group('[i18n-debug] Language.vue');
console.log('$i18n.locale =', this.$i18n.locale);
console.log('availableLocales =', this.$i18n.availableLocales);
console.log('dropdown langs =', this.langs);
console.groupEnd();
axios.get('/_lang/locales.json')
.then(res => {
this.langs = Array.isArray(res.data) ? res.data : [];
})
.catch(() => {
// Fall back to whatever locales were bundled into VueI18n.
this.langs = this.$i18n.availableLocales.slice().sort().map(code => ({
code,
name: code,
nativeName: code,
}));
})
.finally(() => {
this.isLoaded = true;
});
},
watch: {
@ -74,30 +82,14 @@
},
methods: {
fullName(val) {
const factory = new Intl.DisplayNames([val], { type: 'language' });
return factory.of(val);
},
localeName(val) {
const factory = new Intl.DisplayNames([this.$i18n.locale], { type: 'language' });
return factory.of(val);
},
loadLang(lang) {
// [i18n-debug] remove after diagnosis.
console.log('[i18n-debug] loadLang submitting l =', JSON.stringify(lang));
axios.post('/api/pixelfed/web/change-language.json', {
v: 0.1,
l: lang
})
.then(res => {
console.log('[i18n-debug] change-language OK, response =', res.data, '→ setting $i18n.locale =', lang, '| has messages?', Object.prototype.hasOwnProperty.call(this.$i18n.messages, lang));
this.$i18n.locale = lang;
})
.catch(err => {
console.error('[i18n-debug] change-language FAILED', err.response ? err.response.status : err, err.response ? err.response.data : '');
})
}
}
}

@ -576,15 +576,6 @@ const i18n = new VueI18n({
messages: i18nMessages
});
// [i18n-debug] Trace locale resolution — remove after diagnosis.
console.group('[i18n-debug] spa.js');
console.log('html[lang] =', JSON.stringify(locale));
console.log('loaded locales =', Object.keys(i18nMessages).sort());
console.log('active locale =', i18n.locale, '| fallback =', i18n.fallbackLocale);
console.log('exact match for active locale?', Object.prototype.hasOwnProperty.call(i18nMessages, locale));
console.log('sample web.timeline =', i18n.t('timeline.title'));
console.groupEnd();
sync(store, router);
const App = new Vue({

@ -69,8 +69,8 @@
<label for="language" class="col-sm-3 col-form-label font-weight-bold">{{__('settings.home.language')}}</label>
<div class="col-sm-9">
<select class="form-control" name="language">
@foreach(App\Util\Localization\Localization::languages() as $lang)
<option value="{{$lang}}" {{(Auth::user()->language ?? 'en') == $lang ? 'selected':''}}>{{locale_get_display_name($lang, 'en')}} - {{locale_get_display_name($lang, $lang)}}</option>
@foreach(App\Util\Localization\Localization::locales() as $locale)
<option value="{{$locale['code']}}" {{(Auth::user()->language ?? 'en-US') == $locale['code'] ? 'selected':''}}>{{$locale['name']}} - {{$locale['nativeName']}}</option>
@endforeach
</select>
</div>

Loading…
Cancel
Save