diff options
203 files changed, 2138 insertions, 414 deletions
diff --git a/apps/dav/l10n/ar.js b/apps/dav/l10n/ar.js index ee09de99018..ab6981257b0 100644 --- a/apps/dav/l10n/ar.js +++ b/apps/dav/l10n/ar.js @@ -72,6 +72,53 @@ OC.L10N.register( "Description: %s" : "الوصف: %s", "Where: %s" : "المكان: %s", "%1$s via %2$s" : "%1$s عبر %2$s", + "In a %1$s on %2$s for the entire day" : "عند %1$s في %2$s كامل اليوم", + "In a %1$s on %2$s between %3$s - %4$s" : "عند %1$s في %2$s بين %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "عند %1$s %2$s في %3$s كامل اليوم", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "عند %1$s %2$s في %3$s بين %4$s - %5$s", + "Could not generate when statement" : "يتعذّر تكوين عبارة \"متى\"", + "Every Day for the entire day" : "كل يوم كامل اليوم", + "Every Day for the entire day until %1$s" : "كل يوم كامل اليوم حتى %1$s", + "Every Day between %1$s - %2$s" : "كل يوم بين%1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "كل يوم بين %1$s - %2$s حتى %3$s", + "Every %1$d Days for the entire day" : "كل أيام %1$d كامل اليوم", + "Every %1$d Days for the entire day until %2$s" : "كل أيام %1$d كل اليوم حتى %2$s", + "Every %1$d Days between %2$s - %3$s" : "كل أيام %1$d بين %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "كل أيام %1$d بين %2$s - %3$s حتى %4$s", + "Could not generate event recurrence statement" : "يتعذّر توليد عبارة تكرار الحدث", + "Every Week on %1$s for the entire day" : "كل أسبوع أيام %1$s كامل اليوم", + "Every Week on %1$s for the entire day until %2$s" : "كل أسبوع أيام %1$s كامل اليوم حتى %2$s", + "Every Week on %1$s between %2$s - %3$s" : "كل أسبوع أيام %1$s بين %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "كل أسبوع أيام %1$s بين %2$s - %3$s حتى %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "كل%1$d أسبوع أيام %2$s كامل اليوم", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "كل %1$d أسبوع أيام %2$s كامل اليوم حتى %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "كل %1$d أسبوع أيام %2$s بين %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "كل %1$d أسبوع %2$s بين %3$s - %4$s حتى %5$s", + "Every Month on the %1$s for the entire day" : "كل شهر أيام %1$s كامل اليوم", + "Every Month on the %1$s for the entire day until %2$s" : "كل شهر أيام %1$s كامل اليوم حتى %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "كل شهر أيام %1$s بين %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "كل شهر أيام %1$s بين %2$s - %3$s حتى %4$s", + "Every %1$d Months on the %2$s for the entire day" : "كل %1$d شهر أيام %2$s كامل اليوم", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "كل %1$d شهر أيام %2$s كامل اليوم حتى %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "كل %1$d شهر أيام %2$s بين %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "كل %1$d شهر أيام %2$s بين %3$s - %4$s حتى %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "كل سنة في %1$s أيام %2$s كامل اليوم", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "كل سنة في %1$s أيام %2$s كامل اليوم حتى %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "كل سنة في %1$s أيام %2$s بين %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "كل سنة في %1$s أيام %2$s بين %3$s - %4$s حتى %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "كل %1$d سنة في %2$s أيام %3$s كامل اليوم", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "كل %1$d سنة في %2$s أيام %3$s كامل اليوم حتى %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "كل %1$d سنة في %2$s أيام %3$s بين %4$s - %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "كل %1$d سنة في %2$s أيام %3$s بين %4$s - %5$s حتى %6$s", + "On specific dates for the entire day until %1$s" : "في تورايخ محددة كامل اليوم حتى%1$s", + "On specific dates between %1$s - %2$s until %3$s" : "في تواريخ محددة بين %1$s - %2$s حتى %3$s", + "In a %1$s on %2$s" : "عند %1$s في %2$s", + "In a %1$s on %2$s then on %3$s" : "عند %1$s في %2$s ثم في%3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "عند %1$s في %2$s ثم في %3$s و %4$s", + "In %1$s %2$s on %3$s" : "عند %1$s %2$s في %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "عند %1$s %2$s في %3$s ثم في %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "عند %1$s %2$s في %3$s ثم في %4$s و%5$s", + "Could not generate next recurrence statement" : "يتعذّر توليد عبارة التكرار التالي", "Cancelled: %1$s" : "مُلغىً: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" تمّ إلغاؤه", "Re: %1$s" : "إعادة: %1$s", @@ -86,8 +133,10 @@ OC.L10N.register( "Organizer:" : "تنظيم:", "Attendees:" : "الحُضُور:", "Title:" : "العنوان:", + "When:" : "متى:", "Location:" : "المكان :", "Link:" : "الرابط:", + "Occurring:" : "التكرار:", "Accept" : "قبول", "Decline" : "رفض", "More options …" : "مزيد مِن الخيارات…", @@ -111,9 +160,17 @@ OC.L10N.register( "October" : "أكتوبر", "November" : "نوفمبر", "December" : "ديسمبر", - "First" : "الأول", - "Last" : "الأخير", - "Contacts" : "المُراسِلون", + "First" : "أول", + "Second" : "ثاني", + "Third" : "ثالث", + "Fourth" : "رابع", + "Fifty" : "خامس", + "Last" : "آخِر", + "Second Last" : "ما قبل الأخير", + "Third Last" : "الثالث من الآخِر", + "Fourth Last" : "الرابع من الآخِر", + "Fifty Last" : "الخامس من الآخِر", + "Contacts" : "جهات الاتصال", "{actor} created address book {addressbook}" : "{actor} أنشأ دفتر العناوين {addressbook}", "You created address book {addressbook}" : "أنت أنشأت دفتر العناوين {addressbook}", "{actor} deleted address book {addressbook}" : "{actor} قام بحذف دفتر العناوين {addressbook}", @@ -198,11 +255,11 @@ OC.L10N.register( "Weekdays" : "أيام الأسبوع", "Pick a start time for {dayName}" : "إختَر وقت البدء ليوم {dayName}", "Pick a end time for {dayName}" : "إختَر وقت الانتهاء ليوم {dayName}", - "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "قم بتعيين حالة المستخدم تلقائيًا على \"عدم الإزعاج\" خارج نطاق أوقات التوافر لكتم جميع الإشعارات", - "Failed to load availability" : "إخفاق في تحميل أوقات التوافر", - "Saved availability" : "تمّ حفظ أوقات التوافر", - "Failed to save availability" : "إخفاق في حفظ أوقات التواجد", - "Availability" : "أوقات التواجد availability", + "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "قم بتعيين حالة المستخدم تلقائيًا على \"عدم الإزعاج\" خارج نطاق أوقات التواجد لكتم جميع الإشعارات", + "Failed to load availability" : "إخفاق في تحميل أوقات التواجد", + "Saved availability" : "تمّ حفظ أوقات التواجد", + "Failed to save availability" : "تعذّر حفظ أوقات التواجد", + "Availability" : "أوقات التواجد ", "If you configure your working hours, other people will see when you are out of office when they book a meeting." : "إذا قمت بضبط ساعات عملك، سيرى الآخرون متى تكون خارج المكتب عندما يقومون بحجز اجتماع معك.", "Absence" : "غياب", "Configure your next absence period." : "قٌم بتهيئة فترة غيابك القادمة.", diff --git a/apps/dav/l10n/ar.json b/apps/dav/l10n/ar.json index de72e09d47e..fefc511eb90 100644 --- a/apps/dav/l10n/ar.json +++ b/apps/dav/l10n/ar.json @@ -70,6 +70,53 @@ "Description: %s" : "الوصف: %s", "Where: %s" : "المكان: %s", "%1$s via %2$s" : "%1$s عبر %2$s", + "In a %1$s on %2$s for the entire day" : "عند %1$s في %2$s كامل اليوم", + "In a %1$s on %2$s between %3$s - %4$s" : "عند %1$s في %2$s بين %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "عند %1$s %2$s في %3$s كامل اليوم", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "عند %1$s %2$s في %3$s بين %4$s - %5$s", + "Could not generate when statement" : "يتعذّر تكوين عبارة \"متى\"", + "Every Day for the entire day" : "كل يوم كامل اليوم", + "Every Day for the entire day until %1$s" : "كل يوم كامل اليوم حتى %1$s", + "Every Day between %1$s - %2$s" : "كل يوم بين%1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "كل يوم بين %1$s - %2$s حتى %3$s", + "Every %1$d Days for the entire day" : "كل أيام %1$d كامل اليوم", + "Every %1$d Days for the entire day until %2$s" : "كل أيام %1$d كل اليوم حتى %2$s", + "Every %1$d Days between %2$s - %3$s" : "كل أيام %1$d بين %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "كل أيام %1$d بين %2$s - %3$s حتى %4$s", + "Could not generate event recurrence statement" : "يتعذّر توليد عبارة تكرار الحدث", + "Every Week on %1$s for the entire day" : "كل أسبوع أيام %1$s كامل اليوم", + "Every Week on %1$s for the entire day until %2$s" : "كل أسبوع أيام %1$s كامل اليوم حتى %2$s", + "Every Week on %1$s between %2$s - %3$s" : "كل أسبوع أيام %1$s بين %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "كل أسبوع أيام %1$s بين %2$s - %3$s حتى %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "كل%1$d أسبوع أيام %2$s كامل اليوم", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "كل %1$d أسبوع أيام %2$s كامل اليوم حتى %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "كل %1$d أسبوع أيام %2$s بين %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "كل %1$d أسبوع %2$s بين %3$s - %4$s حتى %5$s", + "Every Month on the %1$s for the entire day" : "كل شهر أيام %1$s كامل اليوم", + "Every Month on the %1$s for the entire day until %2$s" : "كل شهر أيام %1$s كامل اليوم حتى %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "كل شهر أيام %1$s بين %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "كل شهر أيام %1$s بين %2$s - %3$s حتى %4$s", + "Every %1$d Months on the %2$s for the entire day" : "كل %1$d شهر أيام %2$s كامل اليوم", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "كل %1$d شهر أيام %2$s كامل اليوم حتى %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "كل %1$d شهر أيام %2$s بين %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "كل %1$d شهر أيام %2$s بين %3$s - %4$s حتى %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "كل سنة في %1$s أيام %2$s كامل اليوم", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "كل سنة في %1$s أيام %2$s كامل اليوم حتى %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "كل سنة في %1$s أيام %2$s بين %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "كل سنة في %1$s أيام %2$s بين %3$s - %4$s حتى %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "كل %1$d سنة في %2$s أيام %3$s كامل اليوم", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "كل %1$d سنة في %2$s أيام %3$s كامل اليوم حتى %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "كل %1$d سنة في %2$s أيام %3$s بين %4$s - %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "كل %1$d سنة في %2$s أيام %3$s بين %4$s - %5$s حتى %6$s", + "On specific dates for the entire day until %1$s" : "في تورايخ محددة كامل اليوم حتى%1$s", + "On specific dates between %1$s - %2$s until %3$s" : "في تواريخ محددة بين %1$s - %2$s حتى %3$s", + "In a %1$s on %2$s" : "عند %1$s في %2$s", + "In a %1$s on %2$s then on %3$s" : "عند %1$s في %2$s ثم في%3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "عند %1$s في %2$s ثم في %3$s و %4$s", + "In %1$s %2$s on %3$s" : "عند %1$s %2$s في %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "عند %1$s %2$s في %3$s ثم في %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "عند %1$s %2$s في %3$s ثم في %4$s و%5$s", + "Could not generate next recurrence statement" : "يتعذّر توليد عبارة التكرار التالي", "Cancelled: %1$s" : "مُلغىً: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" تمّ إلغاؤه", "Re: %1$s" : "إعادة: %1$s", @@ -84,8 +131,10 @@ "Organizer:" : "تنظيم:", "Attendees:" : "الحُضُور:", "Title:" : "العنوان:", + "When:" : "متى:", "Location:" : "المكان :", "Link:" : "الرابط:", + "Occurring:" : "التكرار:", "Accept" : "قبول", "Decline" : "رفض", "More options …" : "مزيد مِن الخيارات…", @@ -109,9 +158,17 @@ "October" : "أكتوبر", "November" : "نوفمبر", "December" : "ديسمبر", - "First" : "الأول", - "Last" : "الأخير", - "Contacts" : "المُراسِلون", + "First" : "أول", + "Second" : "ثاني", + "Third" : "ثالث", + "Fourth" : "رابع", + "Fifty" : "خامس", + "Last" : "آخِر", + "Second Last" : "ما قبل الأخير", + "Third Last" : "الثالث من الآخِر", + "Fourth Last" : "الرابع من الآخِر", + "Fifty Last" : "الخامس من الآخِر", + "Contacts" : "جهات الاتصال", "{actor} created address book {addressbook}" : "{actor} أنشأ دفتر العناوين {addressbook}", "You created address book {addressbook}" : "أنت أنشأت دفتر العناوين {addressbook}", "{actor} deleted address book {addressbook}" : "{actor} قام بحذف دفتر العناوين {addressbook}", @@ -196,11 +253,11 @@ "Weekdays" : "أيام الأسبوع", "Pick a start time for {dayName}" : "إختَر وقت البدء ليوم {dayName}", "Pick a end time for {dayName}" : "إختَر وقت الانتهاء ليوم {dayName}", - "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "قم بتعيين حالة المستخدم تلقائيًا على \"عدم الإزعاج\" خارج نطاق أوقات التوافر لكتم جميع الإشعارات", - "Failed to load availability" : "إخفاق في تحميل أوقات التوافر", - "Saved availability" : "تمّ حفظ أوقات التوافر", - "Failed to save availability" : "إخفاق في حفظ أوقات التواجد", - "Availability" : "أوقات التواجد availability", + "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "قم بتعيين حالة المستخدم تلقائيًا على \"عدم الإزعاج\" خارج نطاق أوقات التواجد لكتم جميع الإشعارات", + "Failed to load availability" : "إخفاق في تحميل أوقات التواجد", + "Saved availability" : "تمّ حفظ أوقات التواجد", + "Failed to save availability" : "تعذّر حفظ أوقات التواجد", + "Availability" : "أوقات التواجد ", "If you configure your working hours, other people will see when you are out of office when they book a meeting." : "إذا قمت بضبط ساعات عملك، سيرى الآخرون متى تكون خارج المكتب عندما يقومون بحجز اجتماع معك.", "Absence" : "غياب", "Configure your next absence period." : "قٌم بتهيئة فترة غيابك القادمة.", diff --git a/apps/dav/l10n/de.js b/apps/dav/l10n/de.js index dee1b3ca2bc..15b40369102 100644 --- a/apps/dav/l10n/de.js +++ b/apps/dav/l10n/de.js @@ -72,6 +72,53 @@ OC.L10N.register( "Description: %s" : "Beschreibung: %s", "Where: %s" : "Ort: %s", "%1$s via %2$s" : "%1$s über %2$s", + "In a %1$s on %2$s for the entire day" : "In einer %1$s am %2$s für den ganzen Tag", + "In a %1$s on %2$s between %3$s - %4$s" : "In einer %1$s am %2$s zwischen %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "In %1$s %2$s am %3$s für den ganzen Tag", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "In %1$s %2$s am %3$s zwischen %4$s - %5$s", + "Could not generate when statement" : "Wann-Angabe konnte nicht erzeugt werden.", + "Every Day for the entire day" : "Jeden Tag für den ganzen Tag", + "Every Day for the entire day until %1$s" : "Jeden Tag für den ganzen Tag bis %1$s", + "Every Day between %1$s - %2$s" : "Jeden Tag zwischen %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Jeden Tag zwischen %1$s - %2$s bis %3$s", + "Every %1$d Days for the entire day" : "Alle %1$d Tage für den ganzen Tag", + "Every %1$d Days for the entire day until %2$s" : "Alle %1$d Tage für den ganzen Tag bis %2$s", + "Every %1$d Days between %2$s - %3$s" : "Alle %1$d Tage zwischen %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Alle %1$d Tage zwischen %2$s - %3$s bis %4$s", + "Could not generate event recurrence statement" : "Angabe für Terminwiederholung konnte nicht erzeugt werden.", + "Every Week on %1$s for the entire day" : "Jede Woche am %1$s für den ganzen Tag", + "Every Week on %1$s for the entire day until %2$s" : "Jede Woche am %1$s für den ganzen Tag bis %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Jede Woche am %1$s zwischen %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Jede Woche am %1$s zwischen %2$s - %3$s bis %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Alle %1$d Wochen am %2$s für den ganzen Tag", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Alle %1$d Wochen am %2$s für den ganzen Tag bis %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Alle %1$d Wochen am %2$s zwischen %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Alle %1$d Wochen am %2$s zwischen %3$s - %4$s bis %5$s", + "Every Month on the %1$s for the entire day" : "Jeden Monat am %1$s für den ganzen Tag", + "Every Month on the %1$s for the entire day until %2$s" : "Jeden Monat am %1$s für den ganzen Tag bis %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Jeden Monat am %1$s zwischen %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Jeden Monat am %1$s zwischen %2$s - %3$s bis %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Alle %1$d Monate am %2$s für den ganzen Tag", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Alle %1$d Monate am %2$s für den ganzen Tag bis %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Alle %1$d Monate am %2$s zwischen %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Alle %1$d Monate am %2$s zwischen %3$s - %4$s bis %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Jedes Jahr im %1$s am %2$s für den ganzen Tag", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Jedes Jahr im %1$s am %2$s für den ganzen Tag bis %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Jedes Jahr im %1$s am %2$s zwischen %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Jedes Jahr im %1$s am %2$s zwischen %3$s - %4$s bis %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Alle %1$d Jahre im %2$s am %3$s für den ganzen Tag", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Alle %1$d Jahre im %2$s am %3$s für den ganzen Tag bis %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Alle %1$d Jahre im %2$s am %3$s zwischen %4$s - %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Alle %1$d Jahre im %2$s am %3$s zwischen %4$s - %5$s bis %6$s", + "On specific dates for the entire day until %1$s" : "An bestimmten Tagen für den ganzen Tag bis %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "An bestimmten Tagen zwischen %1$s - %2$s bis %3$s", + "In a %1$s on %2$s" : "In einer %1$s am %2$s ", + "In a %1$s on %2$s then on %3$s" : "In einer %1$s am %2$s danach am %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "In einer %1$s am %2$s danach am %3$s und %4$s", + "In %1$s %2$s on %3$s" : "In %1$s %2$s am %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "In %1$s %2$s am %3$s danach am %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "In %1$s %2$s am %3$s danach am %4$s und %5$s", + "Could not generate next recurrence statement" : "Angabe für nächste Wiederholung konnte nicht erzeugt werden.", "Cancelled: %1$s" : "Abgesagt: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" wurde abgesagt.", "Re: %1$s" : "Re: %1$s", @@ -89,6 +136,7 @@ OC.L10N.register( "When:" : "Wann:", "Location:" : "Ort:", "Link:" : "Link:", + "Occurring:" : "Vorkommend:", "Accept" : "Akzeptieren", "Decline" : "Ablehnen", "More options …" : "Weitere Optionen …", @@ -113,6 +161,10 @@ OC.L10N.register( "November" : "November", "December" : "Dezember", "First" : "Erste", + "Second" : "2.", + "Third" : "3.", + "Fourth" : "4.", + "Fifty" : "5.", "Last" : "Letzte", "Contacts" : "Kontakte", "{actor} created address book {addressbook}" : "{actor} hat das Adressbuch {addressbook} erstellt", @@ -182,6 +234,7 @@ OC.L10N.register( "Out of office replacement (optional)" : "Abwesenheitsvertretung (optional)", "Name of the replacement" : "Name der Vertretung", "No results." : "Keine Ergebnisse", + "Start typing." : "Beginne mit Schreiben", "Short absence status" : "Kurze Abwesenheits Meldung", "Long absence Message" : "Lange Abwesenheits Meldung", "Save" : "Speichern", diff --git a/apps/dav/l10n/de.json b/apps/dav/l10n/de.json index c2e9d6213c1..52b064230ad 100644 --- a/apps/dav/l10n/de.json +++ b/apps/dav/l10n/de.json @@ -70,6 +70,53 @@ "Description: %s" : "Beschreibung: %s", "Where: %s" : "Ort: %s", "%1$s via %2$s" : "%1$s über %2$s", + "In a %1$s on %2$s for the entire day" : "In einer %1$s am %2$s für den ganzen Tag", + "In a %1$s on %2$s between %3$s - %4$s" : "In einer %1$s am %2$s zwischen %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "In %1$s %2$s am %3$s für den ganzen Tag", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "In %1$s %2$s am %3$s zwischen %4$s - %5$s", + "Could not generate when statement" : "Wann-Angabe konnte nicht erzeugt werden.", + "Every Day for the entire day" : "Jeden Tag für den ganzen Tag", + "Every Day for the entire day until %1$s" : "Jeden Tag für den ganzen Tag bis %1$s", + "Every Day between %1$s - %2$s" : "Jeden Tag zwischen %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Jeden Tag zwischen %1$s - %2$s bis %3$s", + "Every %1$d Days for the entire day" : "Alle %1$d Tage für den ganzen Tag", + "Every %1$d Days for the entire day until %2$s" : "Alle %1$d Tage für den ganzen Tag bis %2$s", + "Every %1$d Days between %2$s - %3$s" : "Alle %1$d Tage zwischen %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Alle %1$d Tage zwischen %2$s - %3$s bis %4$s", + "Could not generate event recurrence statement" : "Angabe für Terminwiederholung konnte nicht erzeugt werden.", + "Every Week on %1$s for the entire day" : "Jede Woche am %1$s für den ganzen Tag", + "Every Week on %1$s for the entire day until %2$s" : "Jede Woche am %1$s für den ganzen Tag bis %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Jede Woche am %1$s zwischen %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Jede Woche am %1$s zwischen %2$s - %3$s bis %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Alle %1$d Wochen am %2$s für den ganzen Tag", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Alle %1$d Wochen am %2$s für den ganzen Tag bis %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Alle %1$d Wochen am %2$s zwischen %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Alle %1$d Wochen am %2$s zwischen %3$s - %4$s bis %5$s", + "Every Month on the %1$s for the entire day" : "Jeden Monat am %1$s für den ganzen Tag", + "Every Month on the %1$s for the entire day until %2$s" : "Jeden Monat am %1$s für den ganzen Tag bis %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Jeden Monat am %1$s zwischen %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Jeden Monat am %1$s zwischen %2$s - %3$s bis %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Alle %1$d Monate am %2$s für den ganzen Tag", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Alle %1$d Monate am %2$s für den ganzen Tag bis %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Alle %1$d Monate am %2$s zwischen %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Alle %1$d Monate am %2$s zwischen %3$s - %4$s bis %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Jedes Jahr im %1$s am %2$s für den ganzen Tag", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Jedes Jahr im %1$s am %2$s für den ganzen Tag bis %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Jedes Jahr im %1$s am %2$s zwischen %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Jedes Jahr im %1$s am %2$s zwischen %3$s - %4$s bis %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Alle %1$d Jahre im %2$s am %3$s für den ganzen Tag", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Alle %1$d Jahre im %2$s am %3$s für den ganzen Tag bis %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Alle %1$d Jahre im %2$s am %3$s zwischen %4$s - %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Alle %1$d Jahre im %2$s am %3$s zwischen %4$s - %5$s bis %6$s", + "On specific dates for the entire day until %1$s" : "An bestimmten Tagen für den ganzen Tag bis %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "An bestimmten Tagen zwischen %1$s - %2$s bis %3$s", + "In a %1$s on %2$s" : "In einer %1$s am %2$s ", + "In a %1$s on %2$s then on %3$s" : "In einer %1$s am %2$s danach am %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "In einer %1$s am %2$s danach am %3$s und %4$s", + "In %1$s %2$s on %3$s" : "In %1$s %2$s am %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "In %1$s %2$s am %3$s danach am %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "In %1$s %2$s am %3$s danach am %4$s und %5$s", + "Could not generate next recurrence statement" : "Angabe für nächste Wiederholung konnte nicht erzeugt werden.", "Cancelled: %1$s" : "Abgesagt: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" wurde abgesagt.", "Re: %1$s" : "Re: %1$s", @@ -87,6 +134,7 @@ "When:" : "Wann:", "Location:" : "Ort:", "Link:" : "Link:", + "Occurring:" : "Vorkommend:", "Accept" : "Akzeptieren", "Decline" : "Ablehnen", "More options …" : "Weitere Optionen …", @@ -111,6 +159,10 @@ "November" : "November", "December" : "Dezember", "First" : "Erste", + "Second" : "2.", + "Third" : "3.", + "Fourth" : "4.", + "Fifty" : "5.", "Last" : "Letzte", "Contacts" : "Kontakte", "{actor} created address book {addressbook}" : "{actor} hat das Adressbuch {addressbook} erstellt", @@ -180,6 +232,7 @@ "Out of office replacement (optional)" : "Abwesenheitsvertretung (optional)", "Name of the replacement" : "Name der Vertretung", "No results." : "Keine Ergebnisse", + "Start typing." : "Beginne mit Schreiben", "Short absence status" : "Kurze Abwesenheits Meldung", "Long absence Message" : "Lange Abwesenheits Meldung", "Save" : "Speichern", diff --git a/apps/dav/l10n/de_DE.js b/apps/dav/l10n/de_DE.js index 44307c88188..5cabdf98bc3 100644 --- a/apps/dav/l10n/de_DE.js +++ b/apps/dav/l10n/de_DE.js @@ -72,6 +72,53 @@ OC.L10N.register( "Description: %s" : "Beschreibung: %s", "Where: %s" : "Ort: %s", "%1$s via %2$s" : "%1$s über %2$s", + "In a %1$s on %2$s for the entire day" : "In einer %1$s am %2$s für den ganzen Tag", + "In a %1$s on %2$s between %3$s - %4$s" : "In einer %1$s am %2$s zwischen %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "In %1$s %2$s am %3$s für den ganzen Tag", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "In %1$s %2$s am %3$s zwischen %4$s - %5$s", + "Could not generate when statement" : "Wann-Angabe konnte nicht erzeugt werden", + "Every Day for the entire day" : "Jeden Tag für den ganzen Tag", + "Every Day for the entire day until %1$s" : "Jeden Tag für den ganzen Tag bis %1$s", + "Every Day between %1$s - %2$s" : "Jeden Tag zwischen %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Jeden Tag zwischen %1$s - %2$s bis %3$s", + "Every %1$d Days for the entire day" : "Alle %1$d Tage für den ganzen Tag", + "Every %1$d Days for the entire day until %2$s" : "Alle %1$d Tage für den ganzen Tag bis %2$s", + "Every %1$d Days between %2$s - %3$s" : "Alle %1$d Tage zwischen %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Alle %1$d Tage zwischen %2$s - %3$s bis %4$s", + "Could not generate event recurrence statement" : "Terminwiederholungsangabe konnte nicht erzeugt werden", + "Every Week on %1$s for the entire day" : "Jede Woche am %1$s für den ganzen Tag", + "Every Week on %1$s for the entire day until %2$s" : "Jede Woche am %1$s für den ganzen Tag bis %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Jede Woche am %1$s zwischen %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Jede Woche am %1$s zwischen %2$s - %3$s bis %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Alle %1$d Wochen am %2$s für den ganzen Tag", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Alle %1$d Wochen am %2$s für den ganzen Tag bis %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Alle %1$d Wochen am %2$s zwischen %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Alle %1$d Wochen am %2$s zwischen %3$s - %4$s bis %5$s", + "Every Month on the %1$s for the entire day" : "Jeden Monat am %1$s für den ganzen Tag", + "Every Month on the %1$s for the entire day until %2$s" : "Jeden Monat am %1$s für den ganzen Tag bis %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Jeden Monat am %1$s zwischen %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Jeden Monat am %1$s zwischen %2$s - %3$s bis %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Alle %1$d Monate am %2$s für den ganzen Tag", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Alle %1$d Monate am %2$s für den ganzen Tag bis %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Alle %1$d Monate am %2$s zwischen %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Alle %1$d Monate am %2$s zwischen %3$s - %4$s bis %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Jedes Jahr im %1$s am %2$s für den ganzen Tag", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Jedes Jahr im %1$s am %2$s für den ganzen Tag bis %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Jedes Jahr im %1$s am %2$s zwischen %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Jedes Jahr im %1$s am %2$s zwischen %3$s - %4$s bis %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Alle %1$d Jahre im %2$s am %3$s für den ganzen Tag", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Alle %1$d Jahre im %2$s am %3$s für den ganzen Tag bis %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Alle %1$d Jahre im %2$s am %3$s zwischen %4$s - %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Alle %1$d Jahre im %2$s am %3$s zwischen %4$s - %5$s bis %6$s", + "On specific dates for the entire day until %1$s" : "An bestimmten Tagen für den ganzen Tag bis %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "An bestimmten Tagen zwischen %1$s - %2$s bis %3$s", + "In a %1$s on %2$s" : "In einer %1$s am %2$s ", + "In a %1$s on %2$s then on %3$s" : "In einer %1$s am %2$s danach am %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "In einer %1$s am %2$s danach am %3$s und %4$s", + "In %1$s %2$s on %3$s" : "In %1$s %2$s am %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "In %1$s %2$s am %3$s danach am %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "In %1$s %2$s am %3$s danach am %4$s und %5$s", + "Could not generate next recurrence statement" : "Nächste Wiederholungsangabe konnte nicht erzeugt werden", "Cancelled: %1$s" : "Abgesagt: %1$s", "\"%1$s\" has been canceled" : "\"%1$s“ wurde abgesagt.", "Re: %1$s" : "Re: %1$s", @@ -89,6 +136,7 @@ OC.L10N.register( "When:" : "Wann:", "Location:" : "Ort:", "Link:" : "Link:", + "Occurring:" : "Vorkommend:", "Accept" : "Akzeptieren", "Decline" : "Ablehnen", "More options …" : "Weitere Optionen …", @@ -112,8 +160,16 @@ OC.L10N.register( "October" : "Oktober", "November" : "November", "December" : "Dezember", - "First" : "Erste", - "Last" : "Letzte", + "First" : "Erstes", + "Second" : "Zweites", + "Third" : "Drittes", + "Fourth" : "Viertes", + "Fifty" : "Fünftes", + "Last" : "Letztes", + "Second Last" : "Vorletztes", + "Third Last" : "Drittletztes", + "Fourth Last" : "Viertletztes", + "Fifty Last" : "Fünftletztes", "Contacts" : "Kontakte", "{actor} created address book {addressbook}" : "{actor} hat das Adressbuch {addressbook} erstellt", "You created address book {addressbook}" : "Sie haben das Adressbuch {addressbook} erstellt", diff --git a/apps/dav/l10n/de_DE.json b/apps/dav/l10n/de_DE.json index 67047a759e3..cdcc06f8d87 100644 --- a/apps/dav/l10n/de_DE.json +++ b/apps/dav/l10n/de_DE.json @@ -70,6 +70,53 @@ "Description: %s" : "Beschreibung: %s", "Where: %s" : "Ort: %s", "%1$s via %2$s" : "%1$s über %2$s", + "In a %1$s on %2$s for the entire day" : "In einer %1$s am %2$s für den ganzen Tag", + "In a %1$s on %2$s between %3$s - %4$s" : "In einer %1$s am %2$s zwischen %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "In %1$s %2$s am %3$s für den ganzen Tag", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "In %1$s %2$s am %3$s zwischen %4$s - %5$s", + "Could not generate when statement" : "Wann-Angabe konnte nicht erzeugt werden", + "Every Day for the entire day" : "Jeden Tag für den ganzen Tag", + "Every Day for the entire day until %1$s" : "Jeden Tag für den ganzen Tag bis %1$s", + "Every Day between %1$s - %2$s" : "Jeden Tag zwischen %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Jeden Tag zwischen %1$s - %2$s bis %3$s", + "Every %1$d Days for the entire day" : "Alle %1$d Tage für den ganzen Tag", + "Every %1$d Days for the entire day until %2$s" : "Alle %1$d Tage für den ganzen Tag bis %2$s", + "Every %1$d Days between %2$s - %3$s" : "Alle %1$d Tage zwischen %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Alle %1$d Tage zwischen %2$s - %3$s bis %4$s", + "Could not generate event recurrence statement" : "Terminwiederholungsangabe konnte nicht erzeugt werden", + "Every Week on %1$s for the entire day" : "Jede Woche am %1$s für den ganzen Tag", + "Every Week on %1$s for the entire day until %2$s" : "Jede Woche am %1$s für den ganzen Tag bis %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Jede Woche am %1$s zwischen %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Jede Woche am %1$s zwischen %2$s - %3$s bis %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Alle %1$d Wochen am %2$s für den ganzen Tag", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Alle %1$d Wochen am %2$s für den ganzen Tag bis %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Alle %1$d Wochen am %2$s zwischen %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Alle %1$d Wochen am %2$s zwischen %3$s - %4$s bis %5$s", + "Every Month on the %1$s for the entire day" : "Jeden Monat am %1$s für den ganzen Tag", + "Every Month on the %1$s for the entire day until %2$s" : "Jeden Monat am %1$s für den ganzen Tag bis %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Jeden Monat am %1$s zwischen %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Jeden Monat am %1$s zwischen %2$s - %3$s bis %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Alle %1$d Monate am %2$s für den ganzen Tag", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Alle %1$d Monate am %2$s für den ganzen Tag bis %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Alle %1$d Monate am %2$s zwischen %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Alle %1$d Monate am %2$s zwischen %3$s - %4$s bis %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Jedes Jahr im %1$s am %2$s für den ganzen Tag", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Jedes Jahr im %1$s am %2$s für den ganzen Tag bis %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Jedes Jahr im %1$s am %2$s zwischen %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Jedes Jahr im %1$s am %2$s zwischen %3$s - %4$s bis %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Alle %1$d Jahre im %2$s am %3$s für den ganzen Tag", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Alle %1$d Jahre im %2$s am %3$s für den ganzen Tag bis %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Alle %1$d Jahre im %2$s am %3$s zwischen %4$s - %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Alle %1$d Jahre im %2$s am %3$s zwischen %4$s - %5$s bis %6$s", + "On specific dates for the entire day until %1$s" : "An bestimmten Tagen für den ganzen Tag bis %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "An bestimmten Tagen zwischen %1$s - %2$s bis %3$s", + "In a %1$s on %2$s" : "In einer %1$s am %2$s ", + "In a %1$s on %2$s then on %3$s" : "In einer %1$s am %2$s danach am %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "In einer %1$s am %2$s danach am %3$s und %4$s", + "In %1$s %2$s on %3$s" : "In %1$s %2$s am %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "In %1$s %2$s am %3$s danach am %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "In %1$s %2$s am %3$s danach am %4$s und %5$s", + "Could not generate next recurrence statement" : "Nächste Wiederholungsangabe konnte nicht erzeugt werden", "Cancelled: %1$s" : "Abgesagt: %1$s", "\"%1$s\" has been canceled" : "\"%1$s“ wurde abgesagt.", "Re: %1$s" : "Re: %1$s", @@ -87,6 +134,7 @@ "When:" : "Wann:", "Location:" : "Ort:", "Link:" : "Link:", + "Occurring:" : "Vorkommend:", "Accept" : "Akzeptieren", "Decline" : "Ablehnen", "More options …" : "Weitere Optionen …", @@ -110,8 +158,16 @@ "October" : "Oktober", "November" : "November", "December" : "Dezember", - "First" : "Erste", - "Last" : "Letzte", + "First" : "Erstes", + "Second" : "Zweites", + "Third" : "Drittes", + "Fourth" : "Viertes", + "Fifty" : "Fünftes", + "Last" : "Letztes", + "Second Last" : "Vorletztes", + "Third Last" : "Drittletztes", + "Fourth Last" : "Viertletztes", + "Fifty Last" : "Fünftletztes", "Contacts" : "Kontakte", "{actor} created address book {addressbook}" : "{actor} hat das Adressbuch {addressbook} erstellt", "You created address book {addressbook}" : "Sie haben das Adressbuch {addressbook} erstellt", diff --git a/apps/dav/l10n/en_GB.js b/apps/dav/l10n/en_GB.js index 73dcdabb143..cf026e159b9 100644 --- a/apps/dav/l10n/en_GB.js +++ b/apps/dav/l10n/en_GB.js @@ -72,6 +72,53 @@ OC.L10N.register( "Description: %s" : "Description: %s", "Where: %s" : "Where: %s", "%1$s via %2$s" : "%1$s via %2$s", + "In a %1$s on %2$s for the entire day" : "In a %1$s on %2$s for the entire day", + "In a %1$s on %2$s between %3$s - %4$s" : "In a %1$s on %2$s between %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "In %1$s %2$s on %3$s for the entire day", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "In %1$s %2$s on %3$s between %4$s - %5$s", + "Could not generate when statement" : "Could not generate when statement", + "Every Day for the entire day" : "Every Day for the entire day", + "Every Day for the entire day until %1$s" : "Every Day for the entire day until %1$s", + "Every Day between %1$s - %2$s" : "Every Day between %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Every Day between %1$s - %2$s until %3$s", + "Every %1$d Days for the entire day" : "Every %1$d Days for the entire day", + "Every %1$d Days for the entire day until %2$s" : "Every %1$d Days for the entire day until %2$s", + "Every %1$d Days between %2$s - %3$s" : "Every %1$d Days between %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Every %1$d Days between %2$s - %3$s until %4$s", + "Could not generate event recurrence statement" : "Could not generate event recurrence statement", + "Every Week on %1$s for the entire day" : "Every Week on %1$s for the entire day", + "Every Week on %1$s for the entire day until %2$s" : "Every Week on %1$s for the entire day until %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Every Week on %1$s between %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Every Week on %1$s between %2$s - %3$s until %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Every %1$d Weeks on %2$s for the entire day", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Every %1$d Weeks on %2$s for the entire day until %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Every %1$d Weeks on %2$s between %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s", + "Every Month on the %1$s for the entire day" : "Every Month on the %1$s for the entire day", + "Every Month on the %1$s for the entire day until %2$s" : "Every Month on the %1$s for the entire day until %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Every Month on the %1$s between %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Every Month on the %1$s between %2$s - %3$s until %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Every %1$d Months on the %2$s for the entire day", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Every %1$d Months on the %2$s for the entire day until %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Every %1$d Months on the %2$s between %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Every Year in %1$s on the %2$s for the entire day", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Every Year in %1$s on the %2$s for the entire day until %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Every Year in %1$s on the %2$s between %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Every %1$d Years in %2$s on the %3$s for the entire day", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s", + "On specific dates for the entire day until %1$s" : "On specific dates for the entire day until %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "On specific dates between %1$s - %2$s until %3$s", + "In a %1$s on %2$s" : "In a %1$s on %2$s", + "In a %1$s on %2$s then on %3$s" : "In a %1$s on %2$s then on %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "In a %1$s on %2$s then on %3$s and %4$s", + "In %1$s %2$s on %3$s" : "In %1$s %2$s on %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "In %1$s %2$s on %3$s then on %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "In %1$s %2$s on %3$s then on %4$s and %5$s", + "Could not generate next recurrence statement" : "Could not generate next recurrence statement", "Cancelled: %1$s" : "Cancelled: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" has been cancelled", "Re: %1$s" : "Re: %1$s", @@ -89,6 +136,7 @@ OC.L10N.register( "When:" : "When:", "Location:" : "Location:", "Link:" : "Link:", + "Occurring:" : "Occurring:", "Accept" : "Accept", "Decline" : "Decline", "More options …" : "More options …", @@ -113,7 +161,15 @@ OC.L10N.register( "November" : "November", "December" : "December", "First" : "First", + "Second" : "Second", + "Third" : "Third", + "Fourth" : "Fourth", + "Fifty" : "Fifty", "Last" : "Last", + "Second Last" : "Second Last", + "Third Last" : "Third Last", + "Fourth Last" : "Fourth Last", + "Fifty Last" : "Fifty Last", "Contacts" : "Contacts", "{actor} created address book {addressbook}" : "{actor} created address book {addressbook}", "You created address book {addressbook}" : "You created address book {addressbook}", diff --git a/apps/dav/l10n/en_GB.json b/apps/dav/l10n/en_GB.json index 1820f0ffb0e..00802ed836e 100644 --- a/apps/dav/l10n/en_GB.json +++ b/apps/dav/l10n/en_GB.json @@ -70,6 +70,53 @@ "Description: %s" : "Description: %s", "Where: %s" : "Where: %s", "%1$s via %2$s" : "%1$s via %2$s", + "In a %1$s on %2$s for the entire day" : "In a %1$s on %2$s for the entire day", + "In a %1$s on %2$s between %3$s - %4$s" : "In a %1$s on %2$s between %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "In %1$s %2$s on %3$s for the entire day", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "In %1$s %2$s on %3$s between %4$s - %5$s", + "Could not generate when statement" : "Could not generate when statement", + "Every Day for the entire day" : "Every Day for the entire day", + "Every Day for the entire day until %1$s" : "Every Day for the entire day until %1$s", + "Every Day between %1$s - %2$s" : "Every Day between %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Every Day between %1$s - %2$s until %3$s", + "Every %1$d Days for the entire day" : "Every %1$d Days for the entire day", + "Every %1$d Days for the entire day until %2$s" : "Every %1$d Days for the entire day until %2$s", + "Every %1$d Days between %2$s - %3$s" : "Every %1$d Days between %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Every %1$d Days between %2$s - %3$s until %4$s", + "Could not generate event recurrence statement" : "Could not generate event recurrence statement", + "Every Week on %1$s for the entire day" : "Every Week on %1$s for the entire day", + "Every Week on %1$s for the entire day until %2$s" : "Every Week on %1$s for the entire day until %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Every Week on %1$s between %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Every Week on %1$s between %2$s - %3$s until %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Every %1$d Weeks on %2$s for the entire day", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Every %1$d Weeks on %2$s for the entire day until %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Every %1$d Weeks on %2$s between %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s", + "Every Month on the %1$s for the entire day" : "Every Month on the %1$s for the entire day", + "Every Month on the %1$s for the entire day until %2$s" : "Every Month on the %1$s for the entire day until %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Every Month on the %1$s between %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Every Month on the %1$s between %2$s - %3$s until %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Every %1$d Months on the %2$s for the entire day", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Every %1$d Months on the %2$s for the entire day until %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Every %1$d Months on the %2$s between %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Every Year in %1$s on the %2$s for the entire day", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Every Year in %1$s on the %2$s for the entire day until %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Every Year in %1$s on the %2$s between %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Every %1$d Years in %2$s on the %3$s for the entire day", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s", + "On specific dates for the entire day until %1$s" : "On specific dates for the entire day until %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "On specific dates between %1$s - %2$s until %3$s", + "In a %1$s on %2$s" : "In a %1$s on %2$s", + "In a %1$s on %2$s then on %3$s" : "In a %1$s on %2$s then on %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "In a %1$s on %2$s then on %3$s and %4$s", + "In %1$s %2$s on %3$s" : "In %1$s %2$s on %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "In %1$s %2$s on %3$s then on %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "In %1$s %2$s on %3$s then on %4$s and %5$s", + "Could not generate next recurrence statement" : "Could not generate next recurrence statement", "Cancelled: %1$s" : "Cancelled: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" has been cancelled", "Re: %1$s" : "Re: %1$s", @@ -87,6 +134,7 @@ "When:" : "When:", "Location:" : "Location:", "Link:" : "Link:", + "Occurring:" : "Occurring:", "Accept" : "Accept", "Decline" : "Decline", "More options …" : "More options …", @@ -111,7 +159,15 @@ "November" : "November", "December" : "December", "First" : "First", + "Second" : "Second", + "Third" : "Third", + "Fourth" : "Fourth", + "Fifty" : "Fifty", "Last" : "Last", + "Second Last" : "Second Last", + "Third Last" : "Third Last", + "Fourth Last" : "Fourth Last", + "Fifty Last" : "Fifty Last", "Contacts" : "Contacts", "{actor} created address book {addressbook}" : "{actor} created address book {addressbook}", "You created address book {addressbook}" : "You created address book {addressbook}", diff --git a/apps/dav/l10n/ga.js b/apps/dav/l10n/ga.js index d3a614c9957..17e81955e37 100644 --- a/apps/dav/l10n/ga.js +++ b/apps/dav/l10n/ga.js @@ -72,6 +72,53 @@ OC.L10N.register( "Description: %s" : "Cur síos: %s", "Where: %s" : "Cá: %s", "%1$s via %2$s" : "%1$s trí %2$s", + "In a %1$s on %2$s for the entire day" : "I %1$s ar %2$s ar feadh an lae ar fad", + "In a %1$s on %2$s between %3$s - %4$s" : "I %1$s ar %2$s idir %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "I %1$s %2$s ar %3$s ar feadh an lae ar fad", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "I %1$s %2$s ar %3$s idir %4$s - %5$s", + "Could not generate when statement" : "Níorbh fhéidir a ghiniúint nuair a ráiteas", + "Every Day for the entire day" : "Gach Lá don lá ar fad", + "Every Day for the entire day until %1$s" : "Gach Lá ar feadh an lae ar fad go dtí %1$s", + "Every Day between %1$s - %2$s" : "Gach Lá idir %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Gach Lá idir %1$s - %2$s go %3$s", + "Every %1$d Days for the entire day" : "Gach %1$d lá don lá ar fad", + "Every %1$d Days for the entire day until %2$s" : "Gach %1$d Laethanta don lá iomlán go dtí %2$s", + "Every %1$d Days between %2$s - %3$s" : "Gach %1$d Laethanta idir %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Gach %1$d Laethanta idir %2$s - %3$s go %4$s", + "Could not generate event recurrence statement" : "Níorbh fhéidir ráiteas atarlaithe teagmhais a ghiniúint", + "Every Week on %1$s for the entire day" : "Gach seachtain ar %1$s don lá ar fad", + "Every Week on %1$s for the entire day until %2$s" : "Gach seachtain ar %1$s don lá ar fad go dtí %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Gach Seachtain ar %1$s idir %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Gach Seachtain ar %1$s idir %2$s - %3$s go %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Gach %1$d seachtain ar %2$s don lá ar fad", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Gach %1$d seachtain ar %2$s ar feadh an lae ar fad go dtí %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Gach %1$d Seachtain ar %2$s idir %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Gach %1$d Seachtain ar %2$s idir %3$s - %4$s go %5$s", + "Every Month on the %1$s for the entire day" : "Gach Mí ar an %1$s don lá ar fad", + "Every Month on the %1$s for the entire day until %2$s" : "Gach Mí ar an %1$s don lá iomlán go dtí %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Gach Mí ar an %1$s idir %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Gach Mí ar an %1$s idir %2$s - %3$s go %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Gach %1$d Míonna ar an %2$s ar feadh an lae ar fad", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Gach %1$d Míonna ar an %2$s ar feadh an lae ar fad go dtí %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Gach %1$d Mí ar an %2$s idir %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Gach %1$d Mí ar an %2$s idir %3$s - %4$s go %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Gach Bliain i %1$s ar an %2$s ar feadh an lae ar fad", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Gach Bliain i %1$s ar an %2$s ar feadh an lae ar fad go dtí %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Gach Bliain i %1$s ar an %2$s idir %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Gach Bliain i %1$s ar an %2$s idir %3$s - %4$s go %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Gach %1$d Bliain i %2$s ar an %3$s don lá ar fad", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Gach %1$d Bliain i %2$s ar an %3$s don lá ar fad go dtí %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Gach %1$d Bliain i %2$s ar an %3$s idir %4$s - %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Gach %1$d Bliain i %2$s ar an %3$s idir %4$s - %5$s go %6$s", + "On specific dates for the entire day until %1$s" : "Ar dhátaí ar leith don lá iomlán go dtí %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "Ar dhátaí sonracha idir %1$s - %2$s go %3$s", + "In a %1$s on %2$s" : "I %1$s ar %2$s", + "In a %1$s on %2$s then on %3$s" : "I %1$s ar %2$s ansin ar %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "I %1$s ar %2$s ansin ar %3$s agus %4$s", + "In %1$s %2$s on %3$s" : "I %1$s %2$s ar %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "I %1$s %2$s ar %3$s ansin ar %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "I %1$s %2$s ar %3$s ansin ar %4$s agus %5$s", + "Could not generate next recurrence statement" : "Níorbh fhéidir an chéad ráiteas atarlaithe eile a ghiniúint", "Cancelled: %1$s" : "Ar ceal: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" curtha ar ceal", "Re: %1$s" : "Maidir le: %1$s", @@ -86,8 +133,10 @@ OC.L10N.register( "Organizer:" : "Eagraí:", "Attendees:" : "Lucht freastail:", "Title:" : "Teideal:", + "When:" : "Cathain:", "Location:" : "Suíomh:", "Link:" : "Nasc:", + "Occurring:" : "Ag tarlú:", "Accept" : "Glac", "Decline" : "Meath", "More options …" : "Tuilleadh roghanna…", @@ -112,7 +161,15 @@ OC.L10N.register( "November" : "Samhain", "December" : "Nollaig", "First" : "Ar dtús", + "Second" : "Dara", + "Third" : "Tríú", + "Fourth" : "Ceathrú", + "Fifty" : "Caoga", "Last" : "Seo caite", + "Second Last" : "Dara Deireanach", + "Third Last" : "An Tríú Deireanach", + "Fourth Last" : "Ceathrú Deireanach", + "Fifty Last" : "Caoga Deireanach", "Contacts" : "Teagmhálaithe", "{actor} created address book {addressbook}" : "chruthaigh {actor} leabhar seoltaí {addressbook}", "You created address book {addressbook}" : "Chruthaigh tú leabhar seoltaí {addressbook}", diff --git a/apps/dav/l10n/ga.json b/apps/dav/l10n/ga.json index 8a75fd69def..5002ac9ff09 100644 --- a/apps/dav/l10n/ga.json +++ b/apps/dav/l10n/ga.json @@ -70,6 +70,53 @@ "Description: %s" : "Cur síos: %s", "Where: %s" : "Cá: %s", "%1$s via %2$s" : "%1$s trí %2$s", + "In a %1$s on %2$s for the entire day" : "I %1$s ar %2$s ar feadh an lae ar fad", + "In a %1$s on %2$s between %3$s - %4$s" : "I %1$s ar %2$s idir %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "I %1$s %2$s ar %3$s ar feadh an lae ar fad", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "I %1$s %2$s ar %3$s idir %4$s - %5$s", + "Could not generate when statement" : "Níorbh fhéidir a ghiniúint nuair a ráiteas", + "Every Day for the entire day" : "Gach Lá don lá ar fad", + "Every Day for the entire day until %1$s" : "Gach Lá ar feadh an lae ar fad go dtí %1$s", + "Every Day between %1$s - %2$s" : "Gach Lá idir %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Gach Lá idir %1$s - %2$s go %3$s", + "Every %1$d Days for the entire day" : "Gach %1$d lá don lá ar fad", + "Every %1$d Days for the entire day until %2$s" : "Gach %1$d Laethanta don lá iomlán go dtí %2$s", + "Every %1$d Days between %2$s - %3$s" : "Gach %1$d Laethanta idir %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Gach %1$d Laethanta idir %2$s - %3$s go %4$s", + "Could not generate event recurrence statement" : "Níorbh fhéidir ráiteas atarlaithe teagmhais a ghiniúint", + "Every Week on %1$s for the entire day" : "Gach seachtain ar %1$s don lá ar fad", + "Every Week on %1$s for the entire day until %2$s" : "Gach seachtain ar %1$s don lá ar fad go dtí %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Gach Seachtain ar %1$s idir %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Gach Seachtain ar %1$s idir %2$s - %3$s go %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Gach %1$d seachtain ar %2$s don lá ar fad", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Gach %1$d seachtain ar %2$s ar feadh an lae ar fad go dtí %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Gach %1$d Seachtain ar %2$s idir %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Gach %1$d Seachtain ar %2$s idir %3$s - %4$s go %5$s", + "Every Month on the %1$s for the entire day" : "Gach Mí ar an %1$s don lá ar fad", + "Every Month on the %1$s for the entire day until %2$s" : "Gach Mí ar an %1$s don lá iomlán go dtí %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Gach Mí ar an %1$s idir %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Gach Mí ar an %1$s idir %2$s - %3$s go %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Gach %1$d Míonna ar an %2$s ar feadh an lae ar fad", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Gach %1$d Míonna ar an %2$s ar feadh an lae ar fad go dtí %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Gach %1$d Mí ar an %2$s idir %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Gach %1$d Mí ar an %2$s idir %3$s - %4$s go %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Gach Bliain i %1$s ar an %2$s ar feadh an lae ar fad", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Gach Bliain i %1$s ar an %2$s ar feadh an lae ar fad go dtí %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Gach Bliain i %1$s ar an %2$s idir %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Gach Bliain i %1$s ar an %2$s idir %3$s - %4$s go %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Gach %1$d Bliain i %2$s ar an %3$s don lá ar fad", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Gach %1$d Bliain i %2$s ar an %3$s don lá ar fad go dtí %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Gach %1$d Bliain i %2$s ar an %3$s idir %4$s - %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Gach %1$d Bliain i %2$s ar an %3$s idir %4$s - %5$s go %6$s", + "On specific dates for the entire day until %1$s" : "Ar dhátaí ar leith don lá iomlán go dtí %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "Ar dhátaí sonracha idir %1$s - %2$s go %3$s", + "In a %1$s on %2$s" : "I %1$s ar %2$s", + "In a %1$s on %2$s then on %3$s" : "I %1$s ar %2$s ansin ar %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "I %1$s ar %2$s ansin ar %3$s agus %4$s", + "In %1$s %2$s on %3$s" : "I %1$s %2$s ar %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "I %1$s %2$s ar %3$s ansin ar %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "I %1$s %2$s ar %3$s ansin ar %4$s agus %5$s", + "Could not generate next recurrence statement" : "Níorbh fhéidir an chéad ráiteas atarlaithe eile a ghiniúint", "Cancelled: %1$s" : "Ar ceal: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" curtha ar ceal", "Re: %1$s" : "Maidir le: %1$s", @@ -84,8 +131,10 @@ "Organizer:" : "Eagraí:", "Attendees:" : "Lucht freastail:", "Title:" : "Teideal:", + "When:" : "Cathain:", "Location:" : "Suíomh:", "Link:" : "Nasc:", + "Occurring:" : "Ag tarlú:", "Accept" : "Glac", "Decline" : "Meath", "More options …" : "Tuilleadh roghanna…", @@ -110,7 +159,15 @@ "November" : "Samhain", "December" : "Nollaig", "First" : "Ar dtús", + "Second" : "Dara", + "Third" : "Tríú", + "Fourth" : "Ceathrú", + "Fifty" : "Caoga", "Last" : "Seo caite", + "Second Last" : "Dara Deireanach", + "Third Last" : "An Tríú Deireanach", + "Fourth Last" : "Ceathrú Deireanach", + "Fifty Last" : "Caoga Deireanach", "Contacts" : "Teagmhálaithe", "{actor} created address book {addressbook}" : "chruthaigh {actor} leabhar seoltaí {addressbook}", "You created address book {addressbook}" : "Chruthaigh tú leabhar seoltaí {addressbook}", diff --git a/apps/dav/l10n/gl.js b/apps/dav/l10n/gl.js index 13d1ffe674b..06799347fef 100644 --- a/apps/dav/l10n/gl.js +++ b/apps/dav/l10n/gl.js @@ -72,6 +72,43 @@ OC.L10N.register( "Description: %s" : "Descrición: %s", "Where: %s" : "Onde: %s", "%1$s via %2$s" : "%1$s mediante %2$s", + "Could not generate when statement" : "Non foi posíbel xerar a declaración when (cando)", + "Every Day for the entire day" : "Todos os días durante todo o día", + "Every Day for the entire day until %1$s" : "Todos os días durante todo o día ata %1$s", + "Every Day between %1$s - %2$s" : "Todos os días entre %1$s e %2$s", + "Every Day between %1$s - %2$s until %3$s" : " Todos os días entre %1$s e %2$s ata %3$s", + "Every %1$d Days for the entire day" : "Cada %1$d días durante todo o día", + "Every %1$d Days for the entire day until %2$s" : "Cada %1$d días durante todo o día ata %2$s", + "Every %1$d Days between %2$s - %3$s" : "Cada %1$d días entre %2$s e %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Cada %1$d días entre %2$s e %3$s ata %4$s", + "Could not generate event recurrence statement" : "Non foi posíbel xerar a declaración de recorrencia do evento", + "Every Week on %1$s for the entire day" : "Todas as semanas o %1$s durante todo o día", + "Every Week on %1$s for the entire day until %2$s" : "Todas as semanas o %1$s durante todo o día ata %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Todas as semanas o %1$s entre %2$s e %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Todas as semanas o %1$s entre %2$s e %3$s ata %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Cada %1$d semanas o %2$s durante todo o día", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Cada %1$d semanas o %2$s durante todo o día ata %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Cada %1$d semanas o %2$s entre %3$s e %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Cada %1$d semanas o %2$s entre %3$s e %4$s ata %5$s", + "Every Month on the %1$s for the entire day" : "Todos os meses o %1$s durante todo o día", + "Every Month on the %1$s for the entire day until %2$s" : "Todos os meses o %1$s durante todo o día ata %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Todos os meses o %1$s entre %2$s e %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Todos os meses o %1$s entre %2$s e %3$s ata %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Cada %1$d meses o %2$s durante todo o día", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Cada %1$d meses o %2$s durante todo o día ata %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Cada %1$d meses o %2$s entre %3$s e %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Cada %1$d meses o %2$s entre %3$s e %4$s ata %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Todos os anos en %1$s, o %2$s durante todo o día", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Todos os anos en %1$s, o %2$s durante todo o día ata %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Todos os anos en %1$s, o %2$s entre %3$s e %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Todos os anos en %1$s, o %2$s entre %3$s e %4$s ata %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Cada %1$d anos en %2$s, o %3$s durante todo o día", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Cada %1$d anos en %2$s, o %3$s durante todo o día ata %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Cada %1$d anos en %2$s, o %3$s entre %4$s e %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Cada %1$d anos en %2$s, o %3$s entre %4$s e %5$s ata %6$s", + "On specific dates for the entire day until %1$s" : "En datas concretas durante todo o día ata %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "En datas concretas entre %1$s e %2$s ata %3$s", + "Could not generate next recurrence statement" : "Non foi posíbel xerar a seguinte declaración de recorrencia", "Cancelled: %1$s" : "Cancelado: %1$s", "\"%1$s\" has been canceled" : "Cancelouse «%1$s»", "Re: %1$s" : "Re: %1$s", @@ -89,6 +126,7 @@ OC.L10N.register( "When:" : "Cando:", "Location:" : "Lugar:", "Link:" : "Ligazón:", + "Occurring:" : "Acaecendo:", "Accept" : "Aceptar", "Decline" : "Declinar", "More options …" : "Máis opcións…", @@ -113,7 +151,15 @@ OC.L10N.register( "November" : "novembro", "December" : "decembro", "First" : "Primeiro", + "Second" : "Segundo", + "Third" : "Terceiro", + "Fourth" : "Cuarto", + "Fifty" : "Cincuenta", "Last" : "Último", + "Second Last" : "Penúltimo", + "Third Last" : "Antepenúltimo", + "Fourth Last" : "Trasantepenúltimo", + "Fifty Last" : "Cincuenta últimos", "Contacts" : "Contactos", "{actor} created address book {addressbook}" : "{actor} creou o caderno de enderezos {addressbook}", "You created address book {addressbook}" : "Vde. creou o caderno de enderezos {addressbook}", @@ -169,7 +215,7 @@ OC.L10N.register( "DAV system address book" : "Caderno de enderezos do sistema DAV", "No outstanding DAV system address book sync." : "Non hai sincronización pendente do caderno de enderezos do sistema DAV.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "A sincronización do caderno de enderezos do sistema DAV aínda non foi executada aínda porque a súa instancia ten máis de 1000 usuarios ou porque se produciu un erro. Execútea manualmente con occ dav:sync-system-addressbook.", - "WebDAV endpoint" : "Terminación WebDAV", + "WebDAV endpoint" : "Punto final WebDAV", "Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Non foi posíbel comprobar que o seu servidor web estea configurado correctamente para permitir a sincronización de ficheiros a través de WebDAV. Compróbeo manualmente.", "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "O servidor non foi configurado correctamente para permitir a sincronización de ficheiros, semella que a interface WebDAV non está a funcionar.", "Your web server is properly set up to allow file synchronization over WebDAV." : "O seu servidor web está configurado correctamente para permitir a sincronización de ficheiros a través de WebDAV.", diff --git a/apps/dav/l10n/gl.json b/apps/dav/l10n/gl.json index ca773051151..136bf4c4fac 100644 --- a/apps/dav/l10n/gl.json +++ b/apps/dav/l10n/gl.json @@ -70,6 +70,43 @@ "Description: %s" : "Descrición: %s", "Where: %s" : "Onde: %s", "%1$s via %2$s" : "%1$s mediante %2$s", + "Could not generate when statement" : "Non foi posíbel xerar a declaración when (cando)", + "Every Day for the entire day" : "Todos os días durante todo o día", + "Every Day for the entire day until %1$s" : "Todos os días durante todo o día ata %1$s", + "Every Day between %1$s - %2$s" : "Todos os días entre %1$s e %2$s", + "Every Day between %1$s - %2$s until %3$s" : " Todos os días entre %1$s e %2$s ata %3$s", + "Every %1$d Days for the entire day" : "Cada %1$d días durante todo o día", + "Every %1$d Days for the entire day until %2$s" : "Cada %1$d días durante todo o día ata %2$s", + "Every %1$d Days between %2$s - %3$s" : "Cada %1$d días entre %2$s e %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Cada %1$d días entre %2$s e %3$s ata %4$s", + "Could not generate event recurrence statement" : "Non foi posíbel xerar a declaración de recorrencia do evento", + "Every Week on %1$s for the entire day" : "Todas as semanas o %1$s durante todo o día", + "Every Week on %1$s for the entire day until %2$s" : "Todas as semanas o %1$s durante todo o día ata %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Todas as semanas o %1$s entre %2$s e %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Todas as semanas o %1$s entre %2$s e %3$s ata %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Cada %1$d semanas o %2$s durante todo o día", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Cada %1$d semanas o %2$s durante todo o día ata %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Cada %1$d semanas o %2$s entre %3$s e %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Cada %1$d semanas o %2$s entre %3$s e %4$s ata %5$s", + "Every Month on the %1$s for the entire day" : "Todos os meses o %1$s durante todo o día", + "Every Month on the %1$s for the entire day until %2$s" : "Todos os meses o %1$s durante todo o día ata %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Todos os meses o %1$s entre %2$s e %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Todos os meses o %1$s entre %2$s e %3$s ata %4$s", + "Every %1$d Months on the %2$s for the entire day" : "Cada %1$d meses o %2$s durante todo o día", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "Cada %1$d meses o %2$s durante todo o día ata %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "Cada %1$d meses o %2$s entre %3$s e %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "Cada %1$d meses o %2$s entre %3$s e %4$s ata %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Todos os anos en %1$s, o %2$s durante todo o día", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Todos os anos en %1$s, o %2$s durante todo o día ata %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Todos os anos en %1$s, o %2$s entre %3$s e %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Todos os anos en %1$s, o %2$s entre %3$s e %4$s ata %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "Cada %1$d anos en %2$s, o %3$s durante todo o día", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "Cada %1$d anos en %2$s, o %3$s durante todo o día ata %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "Cada %1$d anos en %2$s, o %3$s entre %4$s e %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "Cada %1$d anos en %2$s, o %3$s entre %4$s e %5$s ata %6$s", + "On specific dates for the entire day until %1$s" : "En datas concretas durante todo o día ata %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "En datas concretas entre %1$s e %2$s ata %3$s", + "Could not generate next recurrence statement" : "Non foi posíbel xerar a seguinte declaración de recorrencia", "Cancelled: %1$s" : "Cancelado: %1$s", "\"%1$s\" has been canceled" : "Cancelouse «%1$s»", "Re: %1$s" : "Re: %1$s", @@ -87,6 +124,7 @@ "When:" : "Cando:", "Location:" : "Lugar:", "Link:" : "Ligazón:", + "Occurring:" : "Acaecendo:", "Accept" : "Aceptar", "Decline" : "Declinar", "More options …" : "Máis opcións…", @@ -111,7 +149,15 @@ "November" : "novembro", "December" : "decembro", "First" : "Primeiro", + "Second" : "Segundo", + "Third" : "Terceiro", + "Fourth" : "Cuarto", + "Fifty" : "Cincuenta", "Last" : "Último", + "Second Last" : "Penúltimo", + "Third Last" : "Antepenúltimo", + "Fourth Last" : "Trasantepenúltimo", + "Fifty Last" : "Cincuenta últimos", "Contacts" : "Contactos", "{actor} created address book {addressbook}" : "{actor} creou o caderno de enderezos {addressbook}", "You created address book {addressbook}" : "Vde. creou o caderno de enderezos {addressbook}", @@ -167,7 +213,7 @@ "DAV system address book" : "Caderno de enderezos do sistema DAV", "No outstanding DAV system address book sync." : "Non hai sincronización pendente do caderno de enderezos do sistema DAV.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occurred. Please run it manually by calling \"occ dav:sync-system-addressbook\"." : "A sincronización do caderno de enderezos do sistema DAV aínda non foi executada aínda porque a súa instancia ten máis de 1000 usuarios ou porque se produciu un erro. Execútea manualmente con occ dav:sync-system-addressbook.", - "WebDAV endpoint" : "Terminación WebDAV", + "WebDAV endpoint" : "Punto final WebDAV", "Could not check that your web server is properly set up to allow file synchronization over WebDAV. Please check manually." : "Non foi posíbel comprobar que o seu servidor web estea configurado correctamente para permitir a sincronización de ficheiros a través de WebDAV. Compróbeo manualmente.", "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "O servidor non foi configurado correctamente para permitir a sincronización de ficheiros, semella que a interface WebDAV non está a funcionar.", "Your web server is properly set up to allow file synchronization over WebDAV." : "O seu servidor web está configurado correctamente para permitir a sincronización de ficheiros a través de WebDAV.", diff --git a/apps/dav/l10n/ja.js b/apps/dav/l10n/ja.js index 3ce51d690e0..31c1bdc796e 100644 --- a/apps/dav/l10n/ja.js +++ b/apps/dav/l10n/ja.js @@ -72,6 +72,53 @@ OC.L10N.register( "Description: %s" : "説明:%s", "Where: %s" : "場所:%s", "%1$s via %2$s" : "%1$s に %2$s から", + "In a %1$s on %2$s for the entire day" : "一日中%2$sの%1$sで", + "In a %1$s on %2$s between %3$s - %4$s" : "%3$sから%4$sの間の%2$sの%1$sで", + "In %1$s %2$s on %3$s for the entire day" : "終日、%3$sの%1$s %2$sにて", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "%4$s-%5$s間の%3$sで%1$s %2$sに", + "Could not generate when statement" : "when文を生成できませんでした", + "Every Day for the entire day" : "毎日、終日", + "Every Day for the entire day until %1$s" : "%1$sまでの終日、毎日", + "Every Day between %1$s - %2$s" : "%1$sから%2$sの間の毎日", + "Every Day between %1$s - %2$s until %3$s" : "%1$sから%2$sの間で%3$sまで毎日", + "Every %1$d Days for the entire day" : "%1$d日ごとに終日", + "Every %1$d Days for the entire day until %2$s" : "%1$d日ごと、%2$sまで終日", + "Every %1$d Days between %2$s - %3$s" : "%2$s~%3$sの間で%1$d日ごと", + "Every %1$d Days between %2$s - %3$s until %4$s" : "%1$d日ごと %2$s~%3$sの間、%4$sまで", + "Could not generate event recurrence statement" : "イベントの再帰ステートメントを生成できませんでした", + "Every Week on %1$s for the entire day" : "毎週%1$sで終日", + "Every Week on %1$s for the entire day until %2$s" : "毎週%1$sに%2$sまで終日", + "Every Week on %1$s between %2$s - %3$s" : "毎週%1$s、%2$s~%3$sの間", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "毎週%1$s、%2$s~%3$sの間に%4$sまで", + "Every %1$d Weeks on %2$s for the entire day" : "%1$d週ごと%2$sで終日", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "%1$d週ごと%2$sに%3$sまで終日", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "%1$d週ごとの%2$s %3$s~%4$sの間", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "%1$d週ごと%2$s %5$sまで%3$s~%4$sの間", + "Every Month on the %1$s for the entire day" : "毎月%1$sに終日", + "Every Month on the %1$s for the entire day until %2$s" : "毎月%1$s、%2$sまでの終日", + "Every Month on the %1$s between %2$s - %3$s" : "毎月%2$s~%3$sの間の%1$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "毎月、%2$s~%3$sの間の%1$sに、%4$sまで", + "Every %1$d Months on the %2$s for the entire day" : "%1$dカ月ごとの%2$sに終日", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "%1$dカ月ごとの%2$s、%3$sまで終日", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "%1$dカ月ごとの%2$s、%3$s~%4$sの間", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "%1$dカ月ごとの%2$s、%3$s~%4$sの間、%5$sまで", + "Every Year in %1$s on the %2$s for the entire day" : "毎年%1$s %2$sに終日", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "毎年%1$s %2$s %3$sまで終日", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "毎年%1$s %2$s %3$s~%4$sの間の終日", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "毎年%1$s %2$s %3$s~ %4$s %5$sまで ", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "%1$d年ごとの%2$s %3$sの終日", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "%1$d年ごとの%2$s %3$s %4$sまでの終日", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "%1$d年ごとの%2$s %3$s %4$s~%5$sの間", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "%1$d年ごとの%2$s %3$s %4$s~%5$sの間、%6$sまで", + "On specific dates for the entire day until %1$s" : "%1$sまでの特定の日付の終日", + "On specific dates between %1$s - %2$s until %3$s" : "%1$s~%2$sの間、%3$sまでの特定の日付", + "In a %1$s on %2$s" : "%2$sの%1$s", + "In a %1$s on %2$s then on %3$s" : "%2$sそして%3$sの%1$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "%2$sそして%3$sと%4$sの%1$s", + "In %1$s %2$s on %3$s" : "%3$sの%1$s %2$s", + "In %1$s %2$s on %3$s then on %4$s" : "%3$sそして%4$sの%1$s %2$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "%3$sそして%4$sと%5$sの%1$s %2$s", + "Could not generate next recurrence statement" : "次の再帰ステートメントを生成できませんでした", "Cancelled: %1$s" : "キャンセル: %1$s", "\"%1$s\" has been canceled" : "%1$sはキャンセルされました", "Re: %1$s" : "更新: %1$s", @@ -89,6 +136,7 @@ OC.L10N.register( "When:" : "いつ:", "Location:" : "場所:", "Link:" : "リンク:", + "Occurring:" : "発生:", "Accept" : "承諾", "Decline" : "拒否", "More options …" : "他のオプション …", @@ -112,6 +160,16 @@ OC.L10N.register( "October" : "10月", "November" : "11月", "December" : "12月", + "First" : "第1", + "Second" : "第2", + "Third" : "第3", + "Fourth" : "第4", + "Fifty" : "第50", + "Last" : "最後", + "Second Last" : "最後から2番目", + "Third Last" : "最後から3番目", + "Fourth Last" : "最後から4番目", + "Fifty Last" : "最後から50番目", "Contacts" : "連絡先", "{actor} created address book {addressbook}" : "{actor}がアドレス帳 {addressbook}を作成しました", "You created address book {addressbook}" : "アドレス帳 {addressbook}を作成しました", diff --git a/apps/dav/l10n/ja.json b/apps/dav/l10n/ja.json index b04acd73157..b3d90ee1bf1 100644 --- a/apps/dav/l10n/ja.json +++ b/apps/dav/l10n/ja.json @@ -70,6 +70,53 @@ "Description: %s" : "説明:%s", "Where: %s" : "場所:%s", "%1$s via %2$s" : "%1$s に %2$s から", + "In a %1$s on %2$s for the entire day" : "一日中%2$sの%1$sで", + "In a %1$s on %2$s between %3$s - %4$s" : "%3$sから%4$sの間の%2$sの%1$sで", + "In %1$s %2$s on %3$s for the entire day" : "終日、%3$sの%1$s %2$sにて", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "%4$s-%5$s間の%3$sで%1$s %2$sに", + "Could not generate when statement" : "when文を生成できませんでした", + "Every Day for the entire day" : "毎日、終日", + "Every Day for the entire day until %1$s" : "%1$sまでの終日、毎日", + "Every Day between %1$s - %2$s" : "%1$sから%2$sの間の毎日", + "Every Day between %1$s - %2$s until %3$s" : "%1$sから%2$sの間で%3$sまで毎日", + "Every %1$d Days for the entire day" : "%1$d日ごとに終日", + "Every %1$d Days for the entire day until %2$s" : "%1$d日ごと、%2$sまで終日", + "Every %1$d Days between %2$s - %3$s" : "%2$s~%3$sの間で%1$d日ごと", + "Every %1$d Days between %2$s - %3$s until %4$s" : "%1$d日ごと %2$s~%3$sの間、%4$sまで", + "Could not generate event recurrence statement" : "イベントの再帰ステートメントを生成できませんでした", + "Every Week on %1$s for the entire day" : "毎週%1$sで終日", + "Every Week on %1$s for the entire day until %2$s" : "毎週%1$sに%2$sまで終日", + "Every Week on %1$s between %2$s - %3$s" : "毎週%1$s、%2$s~%3$sの間", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "毎週%1$s、%2$s~%3$sの間に%4$sまで", + "Every %1$d Weeks on %2$s for the entire day" : "%1$d週ごと%2$sで終日", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "%1$d週ごと%2$sに%3$sまで終日", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "%1$d週ごとの%2$s %3$s~%4$sの間", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "%1$d週ごと%2$s %5$sまで%3$s~%4$sの間", + "Every Month on the %1$s for the entire day" : "毎月%1$sに終日", + "Every Month on the %1$s for the entire day until %2$s" : "毎月%1$s、%2$sまでの終日", + "Every Month on the %1$s between %2$s - %3$s" : "毎月%2$s~%3$sの間の%1$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "毎月、%2$s~%3$sの間の%1$sに、%4$sまで", + "Every %1$d Months on the %2$s for the entire day" : "%1$dカ月ごとの%2$sに終日", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "%1$dカ月ごとの%2$s、%3$sまで終日", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "%1$dカ月ごとの%2$s、%3$s~%4$sの間", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "%1$dカ月ごとの%2$s、%3$s~%4$sの間、%5$sまで", + "Every Year in %1$s on the %2$s for the entire day" : "毎年%1$s %2$sに終日", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "毎年%1$s %2$s %3$sまで終日", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "毎年%1$s %2$s %3$s~%4$sの間の終日", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "毎年%1$s %2$s %3$s~ %4$s %5$sまで ", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "%1$d年ごとの%2$s %3$sの終日", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "%1$d年ごとの%2$s %3$s %4$sまでの終日", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "%1$d年ごとの%2$s %3$s %4$s~%5$sの間", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "%1$d年ごとの%2$s %3$s %4$s~%5$sの間、%6$sまで", + "On specific dates for the entire day until %1$s" : "%1$sまでの特定の日付の終日", + "On specific dates between %1$s - %2$s until %3$s" : "%1$s~%2$sの間、%3$sまでの特定の日付", + "In a %1$s on %2$s" : "%2$sの%1$s", + "In a %1$s on %2$s then on %3$s" : "%2$sそして%3$sの%1$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "%2$sそして%3$sと%4$sの%1$s", + "In %1$s %2$s on %3$s" : "%3$sの%1$s %2$s", + "In %1$s %2$s on %3$s then on %4$s" : "%3$sそして%4$sの%1$s %2$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "%3$sそして%4$sと%5$sの%1$s %2$s", + "Could not generate next recurrence statement" : "次の再帰ステートメントを生成できませんでした", "Cancelled: %1$s" : "キャンセル: %1$s", "\"%1$s\" has been canceled" : "%1$sはキャンセルされました", "Re: %1$s" : "更新: %1$s", @@ -87,6 +134,7 @@ "When:" : "いつ:", "Location:" : "場所:", "Link:" : "リンク:", + "Occurring:" : "発生:", "Accept" : "承諾", "Decline" : "拒否", "More options …" : "他のオプション …", @@ -110,6 +158,16 @@ "October" : "10月", "November" : "11月", "December" : "12月", + "First" : "第1", + "Second" : "第2", + "Third" : "第3", + "Fourth" : "第4", + "Fifty" : "第50", + "Last" : "最後", + "Second Last" : "最後から2番目", + "Third Last" : "最後から3番目", + "Fourth Last" : "最後から4番目", + "Fifty Last" : "最後から50番目", "Contacts" : "連絡先", "{actor} created address book {addressbook}" : "{actor}がアドレス帳 {addressbook}を作成しました", "You created address book {addressbook}" : "アドレス帳 {addressbook}を作成しました", diff --git a/apps/dav/l10n/nb.js b/apps/dav/l10n/nb.js index 6963ae26d83..39d92e3dee5 100644 --- a/apps/dav/l10n/nb.js +++ b/apps/dav/l10n/nb.js @@ -72,6 +72,25 @@ OC.L10N.register( "Description: %s" : "Beskrivelse: %s", "Where: %s" : "Hvor: %s", "%1$s via %2$s" : "%1$s via %2$s", + "In a %1$s on %2$s for the entire day" : "Om %1$s på %2$s for hele dagen", + "In a %1$s on %2$s between %3$s - %4$s" : "Om %1$s på %2$s mellom %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "Om %1$s %2$s på %3$s for hele dagen", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "Om %1$s %2$s på %3$s mellom %4$s - %5$s", + "Could not generate when statement" : "Kunne ikke generere når-beskrivelse", + "Every Day for the entire day" : "Hver dag for hele dagen", + "Every Day for the entire day until %1$s" : "Hver dag for hele dagen til %1$s", + "Every Day between %1$s - %2$s" : "Hver dag mellom %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Hver dag mellom %1$s - %2$s til %3$s", + "Every %1$d Days for the entire day" : "Hver %1$d dag for hele dagen", + "Every %1$d Days for the entire day until %2$s" : "Hver %1$d dag for hele dagen til %2$s", + "Every %1$d Days between %2$s - %3$s" : "Hver %1$d dag mellom %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Hver %1$d dag mellom %2$s - %3$s til %4$s", + "Could not generate event recurrence statement" : "Kunne ikke generere gjentakelse-beskrivelse", + "Every Week on %1$s for the entire day" : "Hver uke på %1$s for hele dagen", + "Every Week on %1$s for the entire day until %2$s" : "Hver uke på %1$s for hele dagen til %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Hver uke på %1$s mellom %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Hver uke på %1$s mellom %2$s - %3$s til %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Hver %1$d uke på %2$s for hele dagen", "Cancelled: %1$s" : "Kansellerte: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" har blitt kansellert", "Re: %1$s" : "Sv: %1$s", @@ -89,6 +108,7 @@ OC.L10N.register( "When:" : "Når:", "Location:" : "Sted:", "Link:" : "Lenke:", + "Occurring:" : "Forekommer:", "Accept" : "Aksepter", "Decline" : "Avslå", "More options …" : "Flere alternativer ...", @@ -113,7 +133,15 @@ OC.L10N.register( "November" : "November", "December" : "Desember", "First" : "Først", + "Second" : "Andre", + "Third" : "Tredje", + "Fourth" : "Fjerde", + "Fifty" : "Femti", "Last" : "Siste", + "Second Last" : "Nest sist", + "Third Last" : "Tredje sist", + "Fourth Last" : "Fjerde sist", + "Fifty Last" : "Femti siste", "Contacts" : "Kontakter", "{actor} created address book {addressbook}" : "{actor} opprettet adresseboken {addressbook}", "You created address book {addressbook}" : "Du opprettet adresseboken {addressbook}", diff --git a/apps/dav/l10n/nb.json b/apps/dav/l10n/nb.json index 93390b6fd3d..bb289869c81 100644 --- a/apps/dav/l10n/nb.json +++ b/apps/dav/l10n/nb.json @@ -70,6 +70,25 @@ "Description: %s" : "Beskrivelse: %s", "Where: %s" : "Hvor: %s", "%1$s via %2$s" : "%1$s via %2$s", + "In a %1$s on %2$s for the entire day" : "Om %1$s på %2$s for hele dagen", + "In a %1$s on %2$s between %3$s - %4$s" : "Om %1$s på %2$s mellom %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "Om %1$s %2$s på %3$s for hele dagen", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "Om %1$s %2$s på %3$s mellom %4$s - %5$s", + "Could not generate when statement" : "Kunne ikke generere når-beskrivelse", + "Every Day for the entire day" : "Hver dag for hele dagen", + "Every Day for the entire day until %1$s" : "Hver dag for hele dagen til %1$s", + "Every Day between %1$s - %2$s" : "Hver dag mellom %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Hver dag mellom %1$s - %2$s til %3$s", + "Every %1$d Days for the entire day" : "Hver %1$d dag for hele dagen", + "Every %1$d Days for the entire day until %2$s" : "Hver %1$d dag for hele dagen til %2$s", + "Every %1$d Days between %2$s - %3$s" : "Hver %1$d dag mellom %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Hver %1$d dag mellom %2$s - %3$s til %4$s", + "Could not generate event recurrence statement" : "Kunne ikke generere gjentakelse-beskrivelse", + "Every Week on %1$s for the entire day" : "Hver uke på %1$s for hele dagen", + "Every Week on %1$s for the entire day until %2$s" : "Hver uke på %1$s for hele dagen til %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Hver uke på %1$s mellom %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Hver uke på %1$s mellom %2$s - %3$s til %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Hver %1$d uke på %2$s for hele dagen", "Cancelled: %1$s" : "Kansellerte: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" har blitt kansellert", "Re: %1$s" : "Sv: %1$s", @@ -87,6 +106,7 @@ "When:" : "Når:", "Location:" : "Sted:", "Link:" : "Lenke:", + "Occurring:" : "Forekommer:", "Accept" : "Aksepter", "Decline" : "Avslå", "More options …" : "Flere alternativer ...", @@ -111,7 +131,15 @@ "November" : "November", "December" : "Desember", "First" : "Først", + "Second" : "Andre", + "Third" : "Tredje", + "Fourth" : "Fjerde", + "Fifty" : "Femti", "Last" : "Siste", + "Second Last" : "Nest sist", + "Third Last" : "Tredje sist", + "Fourth Last" : "Fjerde sist", + "Fifty Last" : "Femti siste", "Contacts" : "Kontakter", "{actor} created address book {addressbook}" : "{actor} opprettet adresseboken {addressbook}", "You created address book {addressbook}" : "Du opprettet adresseboken {addressbook}", diff --git a/apps/dav/l10n/pl.js b/apps/dav/l10n/pl.js index 03ca33955ac..1ddd0efa28c 100644 --- a/apps/dav/l10n/pl.js +++ b/apps/dav/l10n/pl.js @@ -188,6 +188,7 @@ OC.L10N.register( "Delete slot" : "Usuń przedział czasu", "No working hours set" : "Nie ustawiono godzin pracy", "Add slot" : "Dodaj przedział czasu", + "Weekdays" : "Dni powszednie", "Pick a start time for {dayName}" : "Wybierz dzień rozpoczęcia {dayName}", "Pick a end time for {dayName}" : "Wybierz dzień zakończenia {dayName}", "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatycznie ustaw status użytkownika na \"Nie przeszkadzać\" poza dostępnością, aby wyciszyć wszystkie powiadomienia.", diff --git a/apps/dav/l10n/pl.json b/apps/dav/l10n/pl.json index 7e83aee173c..59f59e9e4d4 100644 --- a/apps/dav/l10n/pl.json +++ b/apps/dav/l10n/pl.json @@ -186,6 +186,7 @@ "Delete slot" : "Usuń przedział czasu", "No working hours set" : "Nie ustawiono godzin pracy", "Add slot" : "Dodaj przedział czasu", + "Weekdays" : "Dni powszednie", "Pick a start time for {dayName}" : "Wybierz dzień rozpoczęcia {dayName}", "Pick a end time for {dayName}" : "Wybierz dzień zakończenia {dayName}", "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automatycznie ustaw status użytkownika na \"Nie przeszkadzać\" poza dostępnością, aby wyciszyć wszystkie powiadomienia.", diff --git a/apps/dav/l10n/pt_BR.js b/apps/dav/l10n/pt_BR.js index 78bf9e30a20..4e76249dd0b 100644 --- a/apps/dav/l10n/pt_BR.js +++ b/apps/dav/l10n/pt_BR.js @@ -72,6 +72,53 @@ OC.L10N.register( "Description: %s" : "Descrição: %s", "Where: %s" : "Onde: %s", "%1$s via %2$s" : "%1$s via %2$s", + "In a %1$s on %2$s for the entire day" : "Em %1$s em %2$s durante todo o dia", + "In a %1$s on %2$s between %3$s - %4$s" : "Em um %1$s sobre %2$s entre %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "Em %1$s %2$s em %3$s durante todo o dia", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "Em %1$s %2$s em %3$s entre %4$s - %5$s", + "Could not generate when statement" : "Não foi possível gerar a instrução Quando", + "Every Day for the entire day" : "Todos os dias durante todo o dia", + "Every Day for the entire day until %1$s" : "Todos os dias durante todo o dia até %1$s", + "Every Day between %1$s - %2$s" : "Todos os dias entre %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Todos os dias entre %1$s - %2$s até %3$s", + "Every %1$d Days for the entire day" : "A cada %1$d dias durante o dia inteiro", + "Every %1$d Days for the entire day until %2$s" : "Cada %1$d dias durante todo o dia até %2$s", + "Every %1$d Days between %2$s - %3$s" : "Todo os %1$d Dias entre %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Todo os %1$d Dias entre %2$s - %3$s até %4$s", + "Could not generate event recurrence statement" : "Não foi possível gerar a instrução de recorrência do evento", + "Every Week on %1$s for the entire day" : "Todas as semanas em %1$s durante o dia inteiro", + "Every Week on %1$s for the entire day until %2$s" : "Toda semana em %1$s durante todo o dia até %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Toda semana em %1$s entre %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Toda semana em %1$s entre %2$s - %3$s até %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Todas as %1$d Semanas em %2$s durante o dia inteiro", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Todas as %1$d Semanas em %2$s durante todo o dia até %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Todas as %1$d Semanas em %2$s entre %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Todas as %1$d Semanas em %2$s entre %3$s - %4$s até %5$s", + "Every Month on the %1$s for the entire day" : "Todo mês em %1$s durante todo o dia", + "Every Month on the %1$s for the entire day until %2$s" : "Todos os meses em %1$s durante todo o dia até %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Todo mês nos %1$s entre %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Todo mês nos %1$s entre %2$s - %3$s até%4$s", + "Every %1$d Months on the %2$s for the entire day" : "A cada %1$d Meses nos %2$s durante o dia inteiro", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "A cada %1$d Meses no %2$s durante todo o dia até%3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "A cada %1$d Meses nos %2$s entre %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "A cada %1$d Meses nos %2$s entre %3$s - %4$s até %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Todos os anos em %1$s em %2$s durante todo o dia", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Todos os anos em %1$s em %2$s durante todo o dia até %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Todos os anos em %1$s nos %2$s entre %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Todos os anos em %1$s nos %2$s entre %3$s - %4$s até %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "A cada %1$d Anos em %2$s nos %3$s durante o dia inteiro", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "A cada %1$d Anos em %2$s nos %3$s durante todo o dia até %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "A cada %1$d Anos em %2$s nos %3$s entre %4$s - %5$s ", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "A cada %1$d Anos em %2$s nos %3$s entre %4$s - %5$s até%6$s", + "On specific dates for the entire day until %1$s" : "Em datas específicas durante todo o dia até %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "Em datas específicas entre %1$s - %2$s até%3$s", + "In a %1$s on %2$s" : "Em um %1$s em %2$s", + "In a %1$s on %2$s then on %3$s" : "Em %1$s em %2$s e depois %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "Em %1$s em %2$s, depois em %3$s e %4$s", + "In %1$s %2$s on %3$s" : "Em %1$s %2$s em %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "In %1$s %2$s em %3$s então em %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "Em %1$s %2$s em %3$s depois em %4$s e %5$s", + "Could not generate next recurrence statement" : "Não foi possível gerar a próxima instrução de recorrência", "Cancelled: %1$s" : "Cancelado: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" foi cancelado", "Re: %1$s" : "Remetente: %1$s", @@ -89,6 +136,7 @@ OC.L10N.register( "When:" : "Quando:", "Location:" : "Localização:", "Link:" : "Link:", + "Occurring:" : "Ocorrendo:", "Accept" : "Aceitar", "Decline" : "Rejeitar", "More options …" : "Mais opções...", @@ -113,7 +161,15 @@ OC.L10N.register( "November" : "Novembro", "December" : "Dezembro", "First" : "Primeiro", + "Second" : "Segunda", + "Third" : "Terça", + "Fourth" : "Quarta", + "Fifty" : "Quinta", "Last" : "Última", + "Second Last" : "Último segundo", + "Third Last" : "Terceiro Último", + "Fourth Last" : "Quarto Último", + "Fifty Last" : "Quinto Último", "Contacts" : "Contatos", "{actor} created address book {addressbook}" : "{actor} criou o livro de endereço {addressbook}", "You created address book {addressbook}" : "Você criou o catálogo de endereços {addressbook}", diff --git a/apps/dav/l10n/pt_BR.json b/apps/dav/l10n/pt_BR.json index 4b74299cc12..68334f880c2 100644 --- a/apps/dav/l10n/pt_BR.json +++ b/apps/dav/l10n/pt_BR.json @@ -70,6 +70,53 @@ "Description: %s" : "Descrição: %s", "Where: %s" : "Onde: %s", "%1$s via %2$s" : "%1$s via %2$s", + "In a %1$s on %2$s for the entire day" : "Em %1$s em %2$s durante todo o dia", + "In a %1$s on %2$s between %3$s - %4$s" : "Em um %1$s sobre %2$s entre %3$s - %4$s", + "In %1$s %2$s on %3$s for the entire day" : "Em %1$s %2$s em %3$s durante todo o dia", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "Em %1$s %2$s em %3$s entre %4$s - %5$s", + "Could not generate when statement" : "Não foi possível gerar a instrução Quando", + "Every Day for the entire day" : "Todos os dias durante todo o dia", + "Every Day for the entire day until %1$s" : "Todos os dias durante todo o dia até %1$s", + "Every Day between %1$s - %2$s" : "Todos os dias entre %1$s - %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Todos os dias entre %1$s - %2$s até %3$s", + "Every %1$d Days for the entire day" : "A cada %1$d dias durante o dia inteiro", + "Every %1$d Days for the entire day until %2$s" : "Cada %1$d dias durante todo o dia até %2$s", + "Every %1$d Days between %2$s - %3$s" : "Todo os %1$d Dias entre %2$s - %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Todo os %1$d Dias entre %2$s - %3$s até %4$s", + "Could not generate event recurrence statement" : "Não foi possível gerar a instrução de recorrência do evento", + "Every Week on %1$s for the entire day" : "Todas as semanas em %1$s durante o dia inteiro", + "Every Week on %1$s for the entire day until %2$s" : "Toda semana em %1$s durante todo o dia até %2$s", + "Every Week on %1$s between %2$s - %3$s" : "Toda semana em %1$s entre %2$s - %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "Toda semana em %1$s entre %2$s - %3$s até %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "Todas as %1$d Semanas em %2$s durante o dia inteiro", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "Todas as %1$d Semanas em %2$s durante todo o dia até %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "Todas as %1$d Semanas em %2$s entre %3$s - %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "Todas as %1$d Semanas em %2$s entre %3$s - %4$s até %5$s", + "Every Month on the %1$s for the entire day" : "Todo mês em %1$s durante todo o dia", + "Every Month on the %1$s for the entire day until %2$s" : "Todos os meses em %1$s durante todo o dia até %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "Todo mês nos %1$s entre %2$s - %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "Todo mês nos %1$s entre %2$s - %3$s até%4$s", + "Every %1$d Months on the %2$s for the entire day" : "A cada %1$d Meses nos %2$s durante o dia inteiro", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "A cada %1$d Meses no %2$s durante todo o dia até%3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "A cada %1$d Meses nos %2$s entre %3$s - %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "A cada %1$d Meses nos %2$s entre %3$s - %4$s até %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "Todos os anos em %1$s em %2$s durante todo o dia", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "Todos os anos em %1$s em %2$s durante todo o dia até %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "Todos os anos em %1$s nos %2$s entre %3$s - %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "Todos os anos em %1$s nos %2$s entre %3$s - %4$s até %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "A cada %1$d Anos em %2$s nos %3$s durante o dia inteiro", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "A cada %1$d Anos em %2$s nos %3$s durante todo o dia até %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "A cada %1$d Anos em %2$s nos %3$s entre %4$s - %5$s ", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "A cada %1$d Anos em %2$s nos %3$s entre %4$s - %5$s até%6$s", + "On specific dates for the entire day until %1$s" : "Em datas específicas durante todo o dia até %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "Em datas específicas entre %1$s - %2$s até%3$s", + "In a %1$s on %2$s" : "Em um %1$s em %2$s", + "In a %1$s on %2$s then on %3$s" : "Em %1$s em %2$s e depois %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "Em %1$s em %2$s, depois em %3$s e %4$s", + "In %1$s %2$s on %3$s" : "Em %1$s %2$s em %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "In %1$s %2$s em %3$s então em %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "Em %1$s %2$s em %3$s depois em %4$s e %5$s", + "Could not generate next recurrence statement" : "Não foi possível gerar a próxima instrução de recorrência", "Cancelled: %1$s" : "Cancelado: %1$s", "\"%1$s\" has been canceled" : "\"%1$s\" foi cancelado", "Re: %1$s" : "Remetente: %1$s", @@ -87,6 +134,7 @@ "When:" : "Quando:", "Location:" : "Localização:", "Link:" : "Link:", + "Occurring:" : "Ocorrendo:", "Accept" : "Aceitar", "Decline" : "Rejeitar", "More options …" : "Mais opções...", @@ -111,7 +159,15 @@ "November" : "Novembro", "December" : "Dezembro", "First" : "Primeiro", + "Second" : "Segunda", + "Third" : "Terça", + "Fourth" : "Quarta", + "Fifty" : "Quinta", "Last" : "Última", + "Second Last" : "Último segundo", + "Third Last" : "Terceiro Último", + "Fourth Last" : "Quarto Último", + "Fifty Last" : "Quinto Último", "Contacts" : "Contatos", "{actor} created address book {addressbook}" : "{actor} criou o livro de endereço {addressbook}", "You created address book {addressbook}" : "Você criou o catálogo de endereços {addressbook}", diff --git a/apps/dav/l10n/sc.js b/apps/dav/l10n/sc.js index d22054d95ca..523d7c393c6 100644 --- a/apps/dav/l10n/sc.js +++ b/apps/dav/l10n/sc.js @@ -63,12 +63,34 @@ OC.L10N.register( "Organizer:" : "Organizadore: ", "Attendees:" : "Partetzipadores:", "Title:" : "Tìtulos:", + "When:" : "Cando:", "Location:" : "Positzione:", "Link:" : "Ligòngiu:", "Accept" : "Atzeta", "Decline" : "Refuda", "More options …" : "Àteras optziones ...", "More options at %s" : "Àteras optziones a is %s", + "Monday" : "Lunis", + "Tuesday" : "Martis", + "Wednesday" : "Mércuris", + "Thursday" : "Giòbia", + "Friday" : "Chenàbura", + "Saturday" : "Sàbudu", + "Sunday" : "Domìnigu", + "January" : "Ghennàrgiu", + "February" : "Freàrgiu", + "March" : "Martzu", + "April" : "Abrile", + "May" : "Maju", + "June" : "Làmparas", + "July" : "Mese de Trìulas/Argiolas", + "August" : "Austu", + "September" : "Cabudanni", + "October" : "Mese de Ladàmini/ Santu Aine", + "November" : "Sant'Andria", + "December" : "Nadale", + "First" : "Primu", + "Last" : "Ùrtimu", "Contacts" : "Cuntatos", "{actor} created address book {addressbook}" : "{actor} at creadu sa rubrica {addressbook}", "You created address book {addressbook}" : "As creadu sa rubrica {addressbook}", @@ -109,13 +131,6 @@ OC.L10N.register( "WebDAV" : "WebDAV", "Save" : "Sarva", "to" : "a", - "Monday" : "Lunis", - "Tuesday" : "Martis", - "Wednesday" : "Mércuris", - "Thursday" : "Giòbia", - "Friday" : "Chenàbura", - "Saturday" : "Sàbudu", - "Sunday" : "Domìnigu", "Calendar server" : "Serbidore calendàriu", "Send invitations to attendees" : "Imbia invitos de partetzipatziones", "Automatically generate a birthday calendar" : "Gènera in automàticu su calendàriu de cumpleannos", diff --git a/apps/dav/l10n/sc.json b/apps/dav/l10n/sc.json index cda578ba5d1..ef13cf2e942 100644 --- a/apps/dav/l10n/sc.json +++ b/apps/dav/l10n/sc.json @@ -61,12 +61,34 @@ "Organizer:" : "Organizadore: ", "Attendees:" : "Partetzipadores:", "Title:" : "Tìtulos:", + "When:" : "Cando:", "Location:" : "Positzione:", "Link:" : "Ligòngiu:", "Accept" : "Atzeta", "Decline" : "Refuda", "More options …" : "Àteras optziones ...", "More options at %s" : "Àteras optziones a is %s", + "Monday" : "Lunis", + "Tuesday" : "Martis", + "Wednesday" : "Mércuris", + "Thursday" : "Giòbia", + "Friday" : "Chenàbura", + "Saturday" : "Sàbudu", + "Sunday" : "Domìnigu", + "January" : "Ghennàrgiu", + "February" : "Freàrgiu", + "March" : "Martzu", + "April" : "Abrile", + "May" : "Maju", + "June" : "Làmparas", + "July" : "Mese de Trìulas/Argiolas", + "August" : "Austu", + "September" : "Cabudanni", + "October" : "Mese de Ladàmini/ Santu Aine", + "November" : "Sant'Andria", + "December" : "Nadale", + "First" : "Primu", + "Last" : "Ùrtimu", "Contacts" : "Cuntatos", "{actor} created address book {addressbook}" : "{actor} at creadu sa rubrica {addressbook}", "You created address book {addressbook}" : "As creadu sa rubrica {addressbook}", @@ -107,13 +129,6 @@ "WebDAV" : "WebDAV", "Save" : "Sarva", "to" : "a", - "Monday" : "Lunis", - "Tuesday" : "Martis", - "Wednesday" : "Mércuris", - "Thursday" : "Giòbia", - "Friday" : "Chenàbura", - "Saturday" : "Sàbudu", - "Sunday" : "Domìnigu", "Calendar server" : "Serbidore calendàriu", "Send invitations to attendees" : "Imbia invitos de partetzipatziones", "Automatically generate a birthday calendar" : "Gènera in automàticu su calendàriu de cumpleannos", diff --git a/apps/dav/l10n/sr.js b/apps/dav/l10n/sr.js index 385b35f1464..5840e71817f 100644 --- a/apps/dav/l10n/sr.js +++ b/apps/dav/l10n/sr.js @@ -72,6 +72,53 @@ OC.L10N.register( "Description: %s" : "Опис: %s", "Where: %s" : "Место: %s", "%1$s via %2$s" : "%1$s преко %2$s", + "In a %1$s on %2$s for the entire day" : "У %1$s дана %2$s током целог дана", + "In a %1$s on %2$s between %3$s - %4$s" : "У %1$s дана %2$s од %3$s до %4$s", + "In %1$s %2$s on %3$s for the entire day" : "У %1$s %2$s дана %3$s током целог дана", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "У %1$s %2$s дана %3$s од %4$s до %5$s", + "Could not generate when statement" : "Не може да се генерише одредба када", + "Every Day for the entire day" : "Сваки дан током целог дана", + "Every Day for the entire day until %1$s" : "Сваки дан током целог дана, све до %1$s", + "Every Day between %1$s - %2$s" : "Сваки дан од %1$s до %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Сваки дан од %1$s до %2$s све до %3$s", + "Every %1$d Days for the entire day" : "Сваких %1$d дана током целог дана", + "Every %1$d Days for the entire day until %2$s" : "Сваких %1$d дана током целог дана све до %2$s", + "Every %1$d Days between %2$s - %3$s" : "Сваких %1$d дана од %2$s до %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Сваких %1$d дана од %2$s до %3$s све до %4$s", + "Could not generate event recurrence statement" : "Не може да се генерише одредба понављања", + "Every Week on %1$s for the entire day" : "%1$s сваке недеље током целог дана", + "Every Week on %1$s for the entire day until %2$s" : "%1$s сваке недеље током целог дана све до %2$s", + "Every Week on %1$s between %2$s - %3$s" : "%1$s сваке недеље од %2$s до %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "%1$s сваке недеље од %2$s до %3$s све до %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "%2$s сваких %1$d недеља током целог дана", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "%2$s сваких %1$d недеља током целог дана све до %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "%2$s сваких %1$d недеља од %3$s до %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "%2$s сваких %1$d недеља од %3$s до %4$s све до %5$s", + "Every Month on the %1$s for the entire day" : "%1$s сваког месеца током целог дана", + "Every Month on the %1$s for the entire day until %2$s" : "%1$s сваког месеца током целог дана све до %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "%1$s сваког месеца од %2$s до %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "%1$s сваког месеца од %2$s до %3$s све до %4$s", + "Every %1$d Months on the %2$s for the entire day" : "%2$s сваких %1$d месеци током целог дана", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "%2$s сваких %1$d месеци током целог дана све до %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "%2$s сваких %1$d месеци од %3$s до %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "%2$s сваких %1$d месеци од %3$s до %4$s све до %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "%1$s сваке године дана %2$s током целог дана", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "%1$s сваке године, дана %2$s током целог дана све до %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "%1$s сваке године, дана %2$s од %3$s до %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "%1$s сваке године, дана %2$s од %3$s до %4$s све до %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "%2$s сваких %1$d година, дана %3$s током целог дана", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "%2$s сваких %1$d година, дана %3$s током целог дана све до %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "%2$s сваких %1$d година, дана %3$s од %4$s до %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "%2$s сваких %1$d година, дана %3$s од %4$s до %5$s све до %6$s", + "On specific dates for the entire day until %1$s" : "Одређених дана током целог дана, све до %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "Одређених дана од %1$s до %2$s све до %3$s", + "In a %1$s on %2$s" : "За %1$s у %2$s", + "In a %1$s on %2$s then on %3$s" : "За %1$s у %2$s, па онда %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "За %1$s у %2$s, па онда %3$s и %4$s", + "In %1$s %2$s on %3$s" : "За %1$s %2$s у %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "За %1$s %2$s у %3$s, па онда у %4$s ", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "За %1$s %2$s у %3$s, па онда у %4$s и %5$s ", + "Could not generate next recurrence statement" : "Није могла да се генерише одредба следћег појављивања", "Cancelled: %1$s" : "Отказано: %1$s", "\"%1$s\" has been canceled" : "„%1$s” је отказано", "Re: %1$s" : "Одг: %1$s", @@ -89,6 +136,7 @@ OC.L10N.register( "When:" : "Време:", "Location:" : "Локација:", "Link:" : "Веза:", + "Occurring:" : "Појављивање:", "Accept" : "Прихвати", "Decline" : "Одбиј", "More options …" : "Још опција…", @@ -113,7 +161,15 @@ OC.L10N.register( "November" : "Новембар", "December" : "Децембар", "First" : "Прва", + "Second" : "Друго", + "Third" : "Треће", + "Fourth" : "Четврто", + "Fifty" : "Пето", "Last" : "Последња", + "Second Last" : "Претпоследње", + "Third Last" : "Треће од краја", + "Fourth Last" : "Четврто од краја", + "Fifty Last" : "Пето од краја", "Contacts" : "Контакти", "{actor} created address book {addressbook}" : "{actor} је креирао адресар {addressbook}", "You created address book {addressbook}" : "Креирали сте адресар {addressbook}", diff --git a/apps/dav/l10n/sr.json b/apps/dav/l10n/sr.json index a03da06ce00..3d40364654a 100644 --- a/apps/dav/l10n/sr.json +++ b/apps/dav/l10n/sr.json @@ -70,6 +70,53 @@ "Description: %s" : "Опис: %s", "Where: %s" : "Место: %s", "%1$s via %2$s" : "%1$s преко %2$s", + "In a %1$s on %2$s for the entire day" : "У %1$s дана %2$s током целог дана", + "In a %1$s on %2$s between %3$s - %4$s" : "У %1$s дана %2$s од %3$s до %4$s", + "In %1$s %2$s on %3$s for the entire day" : "У %1$s %2$s дана %3$s током целог дана", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "У %1$s %2$s дана %3$s од %4$s до %5$s", + "Could not generate when statement" : "Не може да се генерише одредба када", + "Every Day for the entire day" : "Сваки дан током целог дана", + "Every Day for the entire day until %1$s" : "Сваки дан током целог дана, све до %1$s", + "Every Day between %1$s - %2$s" : "Сваки дан од %1$s до %2$s", + "Every Day between %1$s - %2$s until %3$s" : "Сваки дан од %1$s до %2$s све до %3$s", + "Every %1$d Days for the entire day" : "Сваких %1$d дана током целог дана", + "Every %1$d Days for the entire day until %2$s" : "Сваких %1$d дана током целог дана све до %2$s", + "Every %1$d Days between %2$s - %3$s" : "Сваких %1$d дана од %2$s до %3$s", + "Every %1$d Days between %2$s - %3$s until %4$s" : "Сваких %1$d дана од %2$s до %3$s све до %4$s", + "Could not generate event recurrence statement" : "Не може да се генерише одредба понављања", + "Every Week on %1$s for the entire day" : "%1$s сваке недеље током целог дана", + "Every Week on %1$s for the entire day until %2$s" : "%1$s сваке недеље током целог дана све до %2$s", + "Every Week on %1$s between %2$s - %3$s" : "%1$s сваке недеље од %2$s до %3$s", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "%1$s сваке недеље од %2$s до %3$s све до %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "%2$s сваких %1$d недеља током целог дана", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "%2$s сваких %1$d недеља током целог дана све до %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "%2$s сваких %1$d недеља од %3$s до %4$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "%2$s сваких %1$d недеља од %3$s до %4$s све до %5$s", + "Every Month on the %1$s for the entire day" : "%1$s сваког месеца током целог дана", + "Every Month on the %1$s for the entire day until %2$s" : "%1$s сваког месеца током целог дана све до %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "%1$s сваког месеца од %2$s до %3$s", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "%1$s сваког месеца од %2$s до %3$s све до %4$s", + "Every %1$d Months on the %2$s for the entire day" : "%2$s сваких %1$d месеци током целог дана", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "%2$s сваких %1$d месеци током целог дана све до %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "%2$s сваких %1$d месеци од %3$s до %4$s", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "%2$s сваких %1$d месеци од %3$s до %4$s све до %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "%1$s сваке године дана %2$s током целог дана", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "%1$s сваке године, дана %2$s током целог дана све до %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "%1$s сваке године, дана %2$s од %3$s до %4$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "%1$s сваке године, дана %2$s од %3$s до %4$s све до %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "%2$s сваких %1$d година, дана %3$s током целог дана", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "%2$s сваких %1$d година, дана %3$s током целог дана све до %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "%2$s сваких %1$d година, дана %3$s од %4$s до %5$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "%2$s сваких %1$d година, дана %3$s од %4$s до %5$s све до %6$s", + "On specific dates for the entire day until %1$s" : "Одређених дана током целог дана, све до %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "Одређених дана од %1$s до %2$s све до %3$s", + "In a %1$s on %2$s" : "За %1$s у %2$s", + "In a %1$s on %2$s then on %3$s" : "За %1$s у %2$s, па онда %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "За %1$s у %2$s, па онда %3$s и %4$s", + "In %1$s %2$s on %3$s" : "За %1$s %2$s у %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "За %1$s %2$s у %3$s, па онда у %4$s ", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "За %1$s %2$s у %3$s, па онда у %4$s и %5$s ", + "Could not generate next recurrence statement" : "Није могла да се генерише одредба следћег појављивања", "Cancelled: %1$s" : "Отказано: %1$s", "\"%1$s\" has been canceled" : "„%1$s” је отказано", "Re: %1$s" : "Одг: %1$s", @@ -87,6 +134,7 @@ "When:" : "Време:", "Location:" : "Локација:", "Link:" : "Веза:", + "Occurring:" : "Појављивање:", "Accept" : "Прихвати", "Decline" : "Одбиј", "More options …" : "Још опција…", @@ -111,7 +159,15 @@ "November" : "Новембар", "December" : "Децембар", "First" : "Прва", + "Second" : "Друго", + "Third" : "Треће", + "Fourth" : "Четврто", + "Fifty" : "Пето", "Last" : "Последња", + "Second Last" : "Претпоследње", + "Third Last" : "Треће од краја", + "Fourth Last" : "Четврто од краја", + "Fifty Last" : "Пето од краја", "Contacts" : "Контакти", "{actor} created address book {addressbook}" : "{actor} је креирао адресар {addressbook}", "You created address book {addressbook}" : "Креирали сте адресар {addressbook}", diff --git a/apps/dav/l10n/zh_HK.js b/apps/dav/l10n/zh_HK.js index dc584ba1778..996176e8177 100644 --- a/apps/dav/l10n/zh_HK.js +++ b/apps/dav/l10n/zh_HK.js @@ -72,6 +72,53 @@ OC.L10N.register( "Description: %s" : "描述:%s", "Where: %s" : "地點:%s", "%1$s via %2$s" : "%1$s 由 %2$s", + "In a %1$s on %2$s for the entire day" : "%1$s 的 %2$s 整天", + "In a %1$s on %2$s between %3$s - %4$s" : "%1$s 的 %2$s 於 %3$s - %4$s 之間", + "In %1$s %2$s on %3$s for the entire day" : "%1$s %2$s 的 %3$s 整天", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "%1$s %2$s 的 %3$s 於 %4$s - %5$s 之間", + "Could not generate when statement" : "無法產生 when 陳述", + "Every Day for the entire day" : "每天一整天", + "Every Day for the entire day until %1$s" : "每天一整天,直至 %1$s", + "Every Day between %1$s - %2$s" : "每天於 %1$s - %2$s 之間", + "Every Day between %1$s - %2$s until %3$s" : "每天於 %1$s - %2$s 之間,直至 %3$s", + "Every %1$d Days for the entire day" : "每 %1$d 天整天", + "Every %1$d Days for the entire day until %2$s" : "每 %1$d 天整天,直至 %2$s", + "Every %1$d Days between %2$s - %3$s" : "每 %1$d 天於 %2$s - %3$s 之間", + "Every %1$d Days between %2$s - %3$s until %4$s" : "每 %1$d 天於 %2$s - %3$s 之間,直至 %4$s", + "Could not generate event recurrence statement" : "無法產生事件重複陳述", + "Every Week on %1$s for the entire day" : "每週於 %1$s 整天", + "Every Week on %1$s for the entire day until %2$s" : "每週於 %1$s 整天,直到 %2$s", + "Every Week on %1$s between %2$s - %3$s" : "每週於 %1$s,在 %2$s - %3$s 之間", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "每週於 %1$s,在 %2$s - %3$s 之間,直到 %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "每 %1$d 週於 %2$s 整天", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "每 %1$d 週於 %2$s 整天,直至 %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "每 %1$d 週於 %2$s,在 %3$s - %4$s 之間", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "每 %1$d 週於 %2$s,在 %3$s - %4$s 之間,直至 %5$s", + "Every Month on the %1$s for the entire day" : "每個月於 %1$s 整天", + "Every Month on the %1$s for the entire day until %2$s" : "每個月於 %1$s 整天,直至 %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "每個月於 %1$s,在 %2$s - %3$s 之間", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "每個月於 %1$s,在 %2$s - %3$s 之間,直至 %4$s", + "Every %1$d Months on the %2$s for the entire day" : "每 %1$d 個月於 %2$s 整天", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "每 %1$d 個月於 %2$s 整天,直至 %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "每 %1$d 個月於 %2$s,在 %3$s - %4$s 之間", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "每 %1$d 個月於 %2$s,在 %3$s - %4$s 之間,直至 %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "每年於 %1$s 的 %2$s 整天", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "每年於 %1$s 的 %2$s 整天,直至 %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "每年於 %1$s 的 %2$s,在 %3$s - %4$s 之間", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "每年於 %1$s 的 %2$s,在 %3$s - %4$s 之間,直至 %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "每 %1$d 年於 %2$s 的 %3$s 整天", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "每 %1$d 年於 %2$s 的 %3$s 整天,直至 %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "每 %1$d 年於 %2$s 的 %3$s,在 %4$s - %5$s 之間", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "每 %1$d 年於 %2$s 的 %3$s,在 %4$s - %5$s 之間,直至 %6$s", + "On specific dates for the entire day until %1$s" : "在特定日期的整天,直至 %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "在 %1$s - %2$s 之間的特定日期,直至 %3$s", + "In a %1$s on %2$s" : "在 %1$s 的 %2$s", + "In a %1$s on %2$s then on %3$s" : "在 %1$s 的 %2$s,然後 %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "在 %1$s 的 %2$s,然後 %3$s 與 %4$s", + "In %1$s %2$s on %3$s" : "在 %1$s %2$s 的 %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "在 %1$s %2$s 的 %3$s,然後 %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "在 %1$s %2$s 的 %3$s,然後 %4$s 與 %5$s", + "Could not generate next recurrence statement" : "無法產生下一個重複語句", "Cancelled: %1$s" : "已取消:%1$s", "\"%1$s\" has been canceled" : "\"%1$s\" 已被取消", "Re: %1$s" : "關於: %1$s", @@ -89,6 +136,7 @@ OC.L10N.register( "When:" : "時間:", "Location:" : "位置:", "Link:" : "連結:", + "Occurring:" : "發生:", "Accept" : "接受", "Decline" : "拒絕", "More options …" : "更多選項 ...", @@ -113,7 +161,15 @@ OC.L10N.register( "November" : "十一月", "December" : "十二月", "First" : "首頁", + "Second" : "第二", + "Third" : "第三", + "Fourth" : "第四", + "Fifty" : "五十", "Last" : "最後", + "Second Last" : "尾二", + "Third Last" : "尾三", + "Fourth Last" : "尾四", + "Fifty Last" : "尾五", "Contacts" : "聯絡人", "{actor} created address book {addressbook}" : "{actor} 創建了通訊錄 {addressbook} ", "You created address book {addressbook}" : "您創建了通訊錄 {addressbook} ", diff --git a/apps/dav/l10n/zh_HK.json b/apps/dav/l10n/zh_HK.json index b84e0041e28..4875ba98718 100644 --- a/apps/dav/l10n/zh_HK.json +++ b/apps/dav/l10n/zh_HK.json @@ -70,6 +70,53 @@ "Description: %s" : "描述:%s", "Where: %s" : "地點:%s", "%1$s via %2$s" : "%1$s 由 %2$s", + "In a %1$s on %2$s for the entire day" : "%1$s 的 %2$s 整天", + "In a %1$s on %2$s between %3$s - %4$s" : "%1$s 的 %2$s 於 %3$s - %4$s 之間", + "In %1$s %2$s on %3$s for the entire day" : "%1$s %2$s 的 %3$s 整天", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "%1$s %2$s 的 %3$s 於 %4$s - %5$s 之間", + "Could not generate when statement" : "無法產生 when 陳述", + "Every Day for the entire day" : "每天一整天", + "Every Day for the entire day until %1$s" : "每天一整天,直至 %1$s", + "Every Day between %1$s - %2$s" : "每天於 %1$s - %2$s 之間", + "Every Day between %1$s - %2$s until %3$s" : "每天於 %1$s - %2$s 之間,直至 %3$s", + "Every %1$d Days for the entire day" : "每 %1$d 天整天", + "Every %1$d Days for the entire day until %2$s" : "每 %1$d 天整天,直至 %2$s", + "Every %1$d Days between %2$s - %3$s" : "每 %1$d 天於 %2$s - %3$s 之間", + "Every %1$d Days between %2$s - %3$s until %4$s" : "每 %1$d 天於 %2$s - %3$s 之間,直至 %4$s", + "Could not generate event recurrence statement" : "無法產生事件重複陳述", + "Every Week on %1$s for the entire day" : "每週於 %1$s 整天", + "Every Week on %1$s for the entire day until %2$s" : "每週於 %1$s 整天,直到 %2$s", + "Every Week on %1$s between %2$s - %3$s" : "每週於 %1$s,在 %2$s - %3$s 之間", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "每週於 %1$s,在 %2$s - %3$s 之間,直到 %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "每 %1$d 週於 %2$s 整天", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "每 %1$d 週於 %2$s 整天,直至 %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "每 %1$d 週於 %2$s,在 %3$s - %4$s 之間", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "每 %1$d 週於 %2$s,在 %3$s - %4$s 之間,直至 %5$s", + "Every Month on the %1$s for the entire day" : "每個月於 %1$s 整天", + "Every Month on the %1$s for the entire day until %2$s" : "每個月於 %1$s 整天,直至 %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "每個月於 %1$s,在 %2$s - %3$s 之間", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "每個月於 %1$s,在 %2$s - %3$s 之間,直至 %4$s", + "Every %1$d Months on the %2$s for the entire day" : "每 %1$d 個月於 %2$s 整天", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "每 %1$d 個月於 %2$s 整天,直至 %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "每 %1$d 個月於 %2$s,在 %3$s - %4$s 之間", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "每 %1$d 個月於 %2$s,在 %3$s - %4$s 之間,直至 %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "每年於 %1$s 的 %2$s 整天", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "每年於 %1$s 的 %2$s 整天,直至 %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "每年於 %1$s 的 %2$s,在 %3$s - %4$s 之間", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "每年於 %1$s 的 %2$s,在 %3$s - %4$s 之間,直至 %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "每 %1$d 年於 %2$s 的 %3$s 整天", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "每 %1$d 年於 %2$s 的 %3$s 整天,直至 %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "每 %1$d 年於 %2$s 的 %3$s,在 %4$s - %5$s 之間", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "每 %1$d 年於 %2$s 的 %3$s,在 %4$s - %5$s 之間,直至 %6$s", + "On specific dates for the entire day until %1$s" : "在特定日期的整天,直至 %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "在 %1$s - %2$s 之間的特定日期,直至 %3$s", + "In a %1$s on %2$s" : "在 %1$s 的 %2$s", + "In a %1$s on %2$s then on %3$s" : "在 %1$s 的 %2$s,然後 %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "在 %1$s 的 %2$s,然後 %3$s 與 %4$s", + "In %1$s %2$s on %3$s" : "在 %1$s %2$s 的 %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "在 %1$s %2$s 的 %3$s,然後 %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "在 %1$s %2$s 的 %3$s,然後 %4$s 與 %5$s", + "Could not generate next recurrence statement" : "無法產生下一個重複語句", "Cancelled: %1$s" : "已取消:%1$s", "\"%1$s\" has been canceled" : "\"%1$s\" 已被取消", "Re: %1$s" : "關於: %1$s", @@ -87,6 +134,7 @@ "When:" : "時間:", "Location:" : "位置:", "Link:" : "連結:", + "Occurring:" : "發生:", "Accept" : "接受", "Decline" : "拒絕", "More options …" : "更多選項 ...", @@ -111,7 +159,15 @@ "November" : "十一月", "December" : "十二月", "First" : "首頁", + "Second" : "第二", + "Third" : "第三", + "Fourth" : "第四", + "Fifty" : "五十", "Last" : "最後", + "Second Last" : "尾二", + "Third Last" : "尾三", + "Fourth Last" : "尾四", + "Fifty Last" : "尾五", "Contacts" : "聯絡人", "{actor} created address book {addressbook}" : "{actor} 創建了通訊錄 {addressbook} ", "You created address book {addressbook}" : "您創建了通訊錄 {addressbook} ", diff --git a/apps/dav/l10n/zh_TW.js b/apps/dav/l10n/zh_TW.js index 714c7823970..51021af3b7a 100644 --- a/apps/dav/l10n/zh_TW.js +++ b/apps/dav/l10n/zh_TW.js @@ -72,6 +72,53 @@ OC.L10N.register( "Description: %s" : "描述:%s", "Where: %s" : "地點:%s", "%1$s via %2$s" : "%1$s 由 %2$s", + "In a %1$s on %2$s for the entire day" : "%1$s 的 %2$s 整天", + "In a %1$s on %2$s between %3$s - %4$s" : "%1$s 的 %2$s 於 %3$s - %4$s 之間", + "In %1$s %2$s on %3$s for the entire day" : "%1$s %2$s 的 %3$s 整天", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "%1$s %2$s 的 %3$s 於 %4$s - %5$s 之間", + "Could not generate when statement" : "無法產生 when 陳述", + "Every Day for the entire day" : "每天一整天", + "Every Day for the entire day until %1$s" : "每天一整天,直到 %1$s", + "Every Day between %1$s - %2$s" : "每天於 %1$s - %2$s 之間", + "Every Day between %1$s - %2$s until %3$s" : "每天於 %1$s - %2$s 之間,直到 %3$s", + "Every %1$d Days for the entire day" : "每 %1$d 天整天", + "Every %1$d Days for the entire day until %2$s" : "每 %1$d 天整天,直到 %2$s", + "Every %1$d Days between %2$s - %3$s" : "每 %1$d 天於 %2$s - %3$s 之間", + "Every %1$d Days between %2$s - %3$s until %4$s" : "每 %1$d 天於 %2$s - %3$s 之間,直到 %4$s", + "Could not generate event recurrence statement" : "無法產生事件重複陳述", + "Every Week on %1$s for the entire day" : "每週於 %1$s 整天", + "Every Week on %1$s for the entire day until %2$s" : "每週於 %1$s 整天,直到 %2$s", + "Every Week on %1$s between %2$s - %3$s" : "每週於 %1$s,在 %2$s - %3$s 之間", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "每週於 %1$s,在 %2$s - %3$s 之間,直到 %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "每 %1$d 週於 %2$s 整天", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "每 %1$d 週於 %2$s 整天,直到 %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "每 %1$d 週於 %2$s,在 %3$s - %4$s 之間", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "每 %1$d 週於 %2$s,在 %3$s - %4$s 之間,直到 %5$s", + "Every Month on the %1$s for the entire day" : "每個月於 %1$s 整天", + "Every Month on the %1$s for the entire day until %2$s" : "每個月於 %1$s 整天,直到 %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "每個月於 %1$s,在 %2$s - %3$s 之間", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "每個月於 %1$s,在 %2$s - %3$s 之間,直到 %4$s", + "Every %1$d Months on the %2$s for the entire day" : "每 %1$d 個月於 %2$s 整天", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "每 %1$d 個月於 %2$s 整天,直到 %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "每 %1$d 個月於 %2$s,在 %3$s - %4$s 之間", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "每 %1$d 個月於 %2$s,在 %3$s - %4$s 之間,直到 %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "每年於 %1$s 的 %2$s 整天", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "每年於 %1$s 的 %2$s 整天,直到 %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "每年於 %1$s 的 %2$s,在 %3$s - %4$s 之間", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "每年於 %1$s 的 %2$s,在 %3$s - %4$s 之間,直到 %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "每 %1$d 年於 %2$s 的 %3$s 整天", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "每 %1$d 年於 %2$s 的 %3$s 整天,直到 %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "每 %1$d 年於 %2$s 的 %3$s,在 %4$s - %5$s 之間", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "每 %1$d 年於 %2$s 的 %3$s,在 %4$s - %5$s 之間,直到 %6$s", + "On specific dates for the entire day until %1$s" : "在特定日期的整天,直到 %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "在 %1$s - %2$s 之間的特定日期,直到 %3$s", + "In a %1$s on %2$s" : "在 %1$s 的 %2$s", + "In a %1$s on %2$s then on %3$s" : "在 %1$s 的 %2$s,然後 %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "在 %1$s 的 %2$s,然後 %3$s 與 %4$s", + "In %1$s %2$s on %3$s" : "在 %1$s %2$s 的 %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "在 %1$s %2$s 的 %3$s,然後 %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "在 %1$s %2$s 的 %3$s,然後 %4$s 與 %5$s", + "Could not generate next recurrence statement" : "無法產生下一個重複陳述", "Cancelled: %1$s" : "已取消:%1$s", "\"%1$s\" has been canceled" : "「%1$s」已取消", "Re: %1$s" : "回覆:%1$s", @@ -89,6 +136,7 @@ OC.L10N.register( "When:" : "時間:", "Location:" : "地點:", "Link:" : "連結:", + "Occurring:" : "發生:", "Accept" : "接受", "Decline" : "拒絕", "More options …" : "更多選項……", @@ -113,7 +161,15 @@ OC.L10N.register( "November" : "十一月", "December" : "十二月", "First" : "第一個", + "Second" : "第二", + "Third" : "第三", + "Fourth" : "第四", + "Fifty" : "五十", "Last" : "最後", + "Second Last" : "倒數第二", + "Third Last" : "倒數第三", + "Fourth Last" : "倒數第四", + "Fifty Last" : "倒數五十", "Contacts" : "聯絡人", "{actor} created address book {addressbook}" : "{actor} 建立了通訊錄 {addressbook}", "You created address book {addressbook}" : "您建立了通訊錄 {addressbook}", diff --git a/apps/dav/l10n/zh_TW.json b/apps/dav/l10n/zh_TW.json index d90c5d3820e..2f93ffea531 100644 --- a/apps/dav/l10n/zh_TW.json +++ b/apps/dav/l10n/zh_TW.json @@ -70,6 +70,53 @@ "Description: %s" : "描述:%s", "Where: %s" : "地點:%s", "%1$s via %2$s" : "%1$s 由 %2$s", + "In a %1$s on %2$s for the entire day" : "%1$s 的 %2$s 整天", + "In a %1$s on %2$s between %3$s - %4$s" : "%1$s 的 %2$s 於 %3$s - %4$s 之間", + "In %1$s %2$s on %3$s for the entire day" : "%1$s %2$s 的 %3$s 整天", + "In %1$s %2$s on %3$s between %4$s - %5$s" : "%1$s %2$s 的 %3$s 於 %4$s - %5$s 之間", + "Could not generate when statement" : "無法產生 when 陳述", + "Every Day for the entire day" : "每天一整天", + "Every Day for the entire day until %1$s" : "每天一整天,直到 %1$s", + "Every Day between %1$s - %2$s" : "每天於 %1$s - %2$s 之間", + "Every Day between %1$s - %2$s until %3$s" : "每天於 %1$s - %2$s 之間,直到 %3$s", + "Every %1$d Days for the entire day" : "每 %1$d 天整天", + "Every %1$d Days for the entire day until %2$s" : "每 %1$d 天整天,直到 %2$s", + "Every %1$d Days between %2$s - %3$s" : "每 %1$d 天於 %2$s - %3$s 之間", + "Every %1$d Days between %2$s - %3$s until %4$s" : "每 %1$d 天於 %2$s - %3$s 之間,直到 %4$s", + "Could not generate event recurrence statement" : "無法產生事件重複陳述", + "Every Week on %1$s for the entire day" : "每週於 %1$s 整天", + "Every Week on %1$s for the entire day until %2$s" : "每週於 %1$s 整天,直到 %2$s", + "Every Week on %1$s between %2$s - %3$s" : "每週於 %1$s,在 %2$s - %3$s 之間", + "Every Week on %1$s between %2$s - %3$s until %4$s" : "每週於 %1$s,在 %2$s - %3$s 之間,直到 %4$s", + "Every %1$d Weeks on %2$s for the entire day" : "每 %1$d 週於 %2$s 整天", + "Every %1$d Weeks on %2$s for the entire day until %3$s" : "每 %1$d 週於 %2$s 整天,直到 %3$s", + "Every %1$d Weeks on %2$s between %3$s - %4$s" : "每 %1$d 週於 %2$s,在 %3$s - %4$s 之間", + "Every %1$d Weeks on %2$s between %3$s - %4$s until %5$s" : "每 %1$d 週於 %2$s,在 %3$s - %4$s 之間,直到 %5$s", + "Every Month on the %1$s for the entire day" : "每個月於 %1$s 整天", + "Every Month on the %1$s for the entire day until %2$s" : "每個月於 %1$s 整天,直到 %2$s", + "Every Month on the %1$s between %2$s - %3$s" : "每個月於 %1$s,在 %2$s - %3$s 之間", + "Every Month on the %1$s between %2$s - %3$s until %4$s" : "每個月於 %1$s,在 %2$s - %3$s 之間,直到 %4$s", + "Every %1$d Months on the %2$s for the entire day" : "每 %1$d 個月於 %2$s 整天", + "Every %1$d Months on the %2$s for the entire day until %3$s" : "每 %1$d 個月於 %2$s 整天,直到 %3$s", + "Every %1$d Months on the %2$s between %3$s - %4$s" : "每 %1$d 個月於 %2$s,在 %3$s - %4$s 之間", + "Every %1$d Months on the %2$s between %3$s - %4$s until %5$s" : "每 %1$d 個月於 %2$s,在 %3$s - %4$s 之間,直到 %5$s", + "Every Year in %1$s on the %2$s for the entire day" : "每年於 %1$s 的 %2$s 整天", + "Every Year in %1$s on the %2$s for the entire day until %3$s" : "每年於 %1$s 的 %2$s 整天,直到 %3$s", + "Every Year in %1$s on the %2$s between %3$s - %4$s" : "每年於 %1$s 的 %2$s,在 %3$s - %4$s 之間", + "Every Year in %1$s on the %2$s between %3$s - %4$s until %5$s" : "每年於 %1$s 的 %2$s,在 %3$s - %4$s 之間,直到 %5$s", + "Every %1$d Years in %2$s on the %3$s for the entire day" : "每 %1$d 年於 %2$s 的 %3$s 整天", + "Every %1$d Years in %2$s on the %3$s for the entire day until %4$s" : "每 %1$d 年於 %2$s 的 %3$s 整天,直到 %4$s", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s" : "每 %1$d 年於 %2$s 的 %3$s,在 %4$s - %5$s 之間", + "Every %1$d Years in %2$s on the %3$s between %4$s - %5$s until %6$s" : "每 %1$d 年於 %2$s 的 %3$s,在 %4$s - %5$s 之間,直到 %6$s", + "On specific dates for the entire day until %1$s" : "在特定日期的整天,直到 %1$s", + "On specific dates between %1$s - %2$s until %3$s" : "在 %1$s - %2$s 之間的特定日期,直到 %3$s", + "In a %1$s on %2$s" : "在 %1$s 的 %2$s", + "In a %1$s on %2$s then on %3$s" : "在 %1$s 的 %2$s,然後 %3$s", + "In a %1$s on %2$s then on %3$s and %4$s" : "在 %1$s 的 %2$s,然後 %3$s 與 %4$s", + "In %1$s %2$s on %3$s" : "在 %1$s %2$s 的 %3$s", + "In %1$s %2$s on %3$s then on %4$s" : "在 %1$s %2$s 的 %3$s,然後 %4$s", + "In %1$s %2$s on %3$s then on %4$s and %5$s" : "在 %1$s %2$s 的 %3$s,然後 %4$s 與 %5$s", + "Could not generate next recurrence statement" : "無法產生下一個重複陳述", "Cancelled: %1$s" : "已取消:%1$s", "\"%1$s\" has been canceled" : "「%1$s」已取消", "Re: %1$s" : "回覆:%1$s", @@ -87,6 +134,7 @@ "When:" : "時間:", "Location:" : "地點:", "Link:" : "連結:", + "Occurring:" : "發生:", "Accept" : "接受", "Decline" : "拒絕", "More options …" : "更多選項……", @@ -111,7 +159,15 @@ "November" : "十一月", "December" : "十二月", "First" : "第一個", + "Second" : "第二", + "Third" : "第三", + "Fourth" : "第四", + "Fifty" : "五十", "Last" : "最後", + "Second Last" : "倒數第二", + "Third Last" : "倒數第三", + "Fourth Last" : "倒數第四", + "Fifty Last" : "倒數五十", "Contacts" : "聯絡人", "{actor} created address book {addressbook}" : "{actor} 建立了通訊錄 {addressbook}", "You created address book {addressbook}" : "您建立了通訊錄 {addressbook}", diff --git a/apps/dav/lib/Connector/Sabre/DavAclPlugin.php b/apps/dav/lib/Connector/Sabre/DavAclPlugin.php index 8e5000fa9fb..9891a8cab0d 100644 --- a/apps/dav/lib/Connector/Sabre/DavAclPlugin.php +++ b/apps/dav/lib/Connector/Sabre/DavAclPlugin.php @@ -31,6 +31,7 @@ use OCA\DAV\CalDAV\CachedSubscription; use OCA\DAV\CalDAV\Calendar; use OCA\DAV\CardDAV\AddressBook; use Sabre\CalDAV\Principal\User; +use Sabre\DAV\Exception\Forbidden; use Sabre\DAV\Exception\NotFound; use Sabre\DAV\INode; use Sabre\DAV\PropFind; @@ -69,13 +70,19 @@ class DavAclPlugin extends \Sabre\DAVACL\Plugin { $type = 'Node'; break; } - throw new NotFound( - sprintf( - "%s with name '%s' could not be found", - $type, - $node->getName() - ) - ); + + if ($this->getCurrentUserPrincipal() === $node->getOwner()) { + throw new Forbidden("Access denied"); + } else { + throw new NotFound( + sprintf( + "%s with name '%s' could not be found", + $type, + $node->getName() + ) + ); + } + } return $access; diff --git a/apps/files/l10n/ar.js b/apps/files/l10n/ar.js index 59656d85898..37e7e8d0537 100644 --- a/apps/files/l10n/ar.js +++ b/apps/files/l10n/ar.js @@ -157,6 +157,10 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong>" : "تم <strong> تغيير</strong> ملف أو مجلد", "A favorite file or folder has been <strong>changed</strong>" : "ملف في المفضلة تم <strong>تم تغييره</strong>", "Upload (max. %s)" : "الرفع ( حد اقصى. %s ) ", + "Files compatibility" : "توافقية الملفات", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "السماح بتقييد أسماء الملفات لضمان إمكانية مزامنة الملفات مع جميع العملاء. بشكل افتراضي، يُسمح بجميع أسماء الملفات الصالحة على POSIX (مثل Linux أو macOS).", + "Enforce Windows compatibility" : "فرض التوافق مع وندوز", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "سيؤدي هذا إلى حظر أسماء الملفات غير الصالحة على أنظمة Windows؛ مثل استخدام الأسماء المحجوزة أو الأحرف الخاصة. لكن هذا لن يفرض توافق حساسية الحالة.", "Accept" : "قبول", "Reject" : "رفض", "Incoming ownership transfer from {user}" : "تم تحويل ملكية الملف إليك من قبل {user}", diff --git a/apps/files/l10n/ar.json b/apps/files/l10n/ar.json index a8097c43e5f..6d48f589cf6 100644 --- a/apps/files/l10n/ar.json +++ b/apps/files/l10n/ar.json @@ -155,6 +155,10 @@ "A file or folder has been <strong>changed</strong>" : "تم <strong> تغيير</strong> ملف أو مجلد", "A favorite file or folder has been <strong>changed</strong>" : "ملف في المفضلة تم <strong>تم تغييره</strong>", "Upload (max. %s)" : "الرفع ( حد اقصى. %s ) ", + "Files compatibility" : "توافقية الملفات", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "السماح بتقييد أسماء الملفات لضمان إمكانية مزامنة الملفات مع جميع العملاء. بشكل افتراضي، يُسمح بجميع أسماء الملفات الصالحة على POSIX (مثل Linux أو macOS).", + "Enforce Windows compatibility" : "فرض التوافق مع وندوز", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "سيؤدي هذا إلى حظر أسماء الملفات غير الصالحة على أنظمة Windows؛ مثل استخدام الأسماء المحجوزة أو الأحرف الخاصة. لكن هذا لن يفرض توافق حساسية الحالة.", "Accept" : "قبول", "Reject" : "رفض", "Incoming ownership transfer from {user}" : "تم تحويل ملكية الملف إليك من قبل {user}", diff --git a/apps/files/l10n/da.js b/apps/files/l10n/da.js index 65ff025ee7d..5a94a1bf5ac 100644 --- a/apps/files/l10n/da.js +++ b/apps/files/l10n/da.js @@ -53,7 +53,7 @@ OC.L10N.register( "This operation is forbidden" : "Denne operation er forbudt", "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappe er utilgængelig, tjek venligst loggene eller kontakt administratoren", "Storage is temporarily not available" : "Lagerplads er midlertidigt ikke tilgængeligt", - "Could not move \"{file}\", target exists" : "Kunne ikke flytte \"{file}\" - der findes allerede en fil med dette navn", + "Could not move \"{file}\", target exists" : "Kunne ikke flytte \"{file}\" - filen findes allerede", "Could not move \"{file}\"" : "Kunne ikke flytte \"{file}\"", "copy" : "kopiér", "Could not copy \"{file}\", target exists" : "Kunne ikke kopiere \"{file}\" - der findes allerede en fil med dette navn", @@ -229,7 +229,7 @@ OC.L10N.register( "Choose {file}" : "Vælg {file}", "Loading current folder" : "Indlæser aktuelle mappe", "No files in here" : "Her er ingen filer", - "Upload some content or sync with your devices!" : "Overfør indhold eller synkronisér med dine enheder!", + "Upload some content or sync with your devices!" : "Upload indhold eller synkronisér med dine enheder!", "Go to the previous folder" : "Gå til forrige mappe", "Go back" : "Gå tilbage", "Share" : "Del", diff --git a/apps/files/l10n/da.json b/apps/files/l10n/da.json index 838c1b76edd..28c27b88691 100644 --- a/apps/files/l10n/da.json +++ b/apps/files/l10n/da.json @@ -51,7 +51,7 @@ "This operation is forbidden" : "Denne operation er forbudt", "This directory is unavailable, please check the logs or contact the administrator" : "Denne mappe er utilgængelig, tjek venligst loggene eller kontakt administratoren", "Storage is temporarily not available" : "Lagerplads er midlertidigt ikke tilgængeligt", - "Could not move \"{file}\", target exists" : "Kunne ikke flytte \"{file}\" - der findes allerede en fil med dette navn", + "Could not move \"{file}\", target exists" : "Kunne ikke flytte \"{file}\" - filen findes allerede", "Could not move \"{file}\"" : "Kunne ikke flytte \"{file}\"", "copy" : "kopiér", "Could not copy \"{file}\", target exists" : "Kunne ikke kopiere \"{file}\" - der findes allerede en fil med dette navn", @@ -227,7 +227,7 @@ "Choose {file}" : "Vælg {file}", "Loading current folder" : "Indlæser aktuelle mappe", "No files in here" : "Her er ingen filer", - "Upload some content or sync with your devices!" : "Overfør indhold eller synkronisér med dine enheder!", + "Upload some content or sync with your devices!" : "Upload indhold eller synkronisér med dine enheder!", "Go to the previous folder" : "Gå til forrige mappe", "Go back" : "Gå tilbage", "Share" : "Del", diff --git a/apps/files/l10n/de_DE.js b/apps/files/l10n/de_DE.js index 5ce50eaa33a..f5fcf8287c7 100644 --- a/apps/files/l10n/de_DE.js +++ b/apps/files/l10n/de_DE.js @@ -157,6 +157,10 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Eine favorisierte Datei oder ein Ordner wurde <strong>geändert</strong>", "Upload (max. %s)" : "Hochladen (max. %s)", + "Files compatibility" : "Dateikompatibilität", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Ermöglicht die Einschränkung von Dateinamen, um sicherzustellen, dass Dateien mit allen Clients synchronisiert werden können. Standardmäßig sind alle unter POSIX (z. B. Linux oder macOS) gültigen Dateinamen zulässig.", + "Enforce Windows compatibility" : "Windows-Kompatibilität erzwingen", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Dadurch werden Dateinamen blockiert, die auf Windows-Systemen unzulässig, z. B. reservierte Namen oder Sonderzeichen. Die Kompatibilität der Groß-/Kleinschreibung wird dadurch jedoch nicht erzwungen.", "Accept" : "Akzeptieren", "Reject" : "Ablehnen", "Incoming ownership transfer from {user}" : "Eingehende Besitzübertragung von {user}", diff --git a/apps/files/l10n/de_DE.json b/apps/files/l10n/de_DE.json index 0f05d3a6c33..148d37a9144 100644 --- a/apps/files/l10n/de_DE.json +++ b/apps/files/l10n/de_DE.json @@ -155,6 +155,10 @@ "A file or folder has been <strong>changed</strong>" : "Eine Datei oder ein Ordner wurde <strong>geändert</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Eine favorisierte Datei oder ein Ordner wurde <strong>geändert</strong>", "Upload (max. %s)" : "Hochladen (max. %s)", + "Files compatibility" : "Dateikompatibilität", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Ermöglicht die Einschränkung von Dateinamen, um sicherzustellen, dass Dateien mit allen Clients synchronisiert werden können. Standardmäßig sind alle unter POSIX (z. B. Linux oder macOS) gültigen Dateinamen zulässig.", + "Enforce Windows compatibility" : "Windows-Kompatibilität erzwingen", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Dadurch werden Dateinamen blockiert, die auf Windows-Systemen unzulässig, z. B. reservierte Namen oder Sonderzeichen. Die Kompatibilität der Groß-/Kleinschreibung wird dadurch jedoch nicht erzwungen.", "Accept" : "Akzeptieren", "Reject" : "Ablehnen", "Incoming ownership transfer from {user}" : "Eingehende Besitzübertragung von {user}", diff --git a/apps/files/l10n/en_GB.js b/apps/files/l10n/en_GB.js index 452e5522580..85f81513f00 100644 --- a/apps/files/l10n/en_GB.js +++ b/apps/files/l10n/en_GB.js @@ -157,6 +157,10 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong>" : "A file or folder has been <strong>changed</strong>", "A favorite file or folder has been <strong>changed</strong>" : "A favourite file or folder has been <strong>changed</strong>", "Upload (max. %s)" : "Upload (max. %s)", + "Files compatibility" : "Files compatibility", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed.", + "Enforce Windows compatibility" : "Enforce Windows compatibility", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity.", "Accept" : "Accept", "Reject" : "Reject", "Incoming ownership transfer from {user}" : "Incoming ownership transfer from {user}", diff --git a/apps/files/l10n/en_GB.json b/apps/files/l10n/en_GB.json index dd25c7c1790..e60e631d098 100644 --- a/apps/files/l10n/en_GB.json +++ b/apps/files/l10n/en_GB.json @@ -155,6 +155,10 @@ "A file or folder has been <strong>changed</strong>" : "A file or folder has been <strong>changed</strong>", "A favorite file or folder has been <strong>changed</strong>" : "A favourite file or folder has been <strong>changed</strong>", "Upload (max. %s)" : "Upload (max. %s)", + "Files compatibility" : "Files compatibility", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed.", + "Enforce Windows compatibility" : "Enforce Windows compatibility", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity.", "Accept" : "Accept", "Reject" : "Reject", "Incoming ownership transfer from {user}" : "Incoming ownership transfer from {user}", diff --git a/apps/files/l10n/es_MX.js b/apps/files/l10n/es_MX.js index 9ad8c4d6ced..5ed189991a3 100644 --- a/apps/files/l10n/es_MX.js +++ b/apps/files/l10n/es_MX.js @@ -157,6 +157,10 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Un archivo o carpeta favorito ha sido <strong>cambiado</strong>", "Upload (max. %s)" : "Cargar (max. %s)", + "Files compatibility" : "Compatibilidad de archivos", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Permitir restringir los nombres de archivos para asegurar que los archivos se puedan sincronizar con todos los clientes. Por defecto, se permiten todos los nombres de archivos válidos en POSIX (por ejemplo, Linux o macOS).", + "Enforce Windows compatibility" : "Imponer la compatibilidad de Windows", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Esto bloqueará los nombres de archivos inválidos en sistemas Windows, tales como usar nombres reservados o caracteres especiales. Pero no impondrá la compatibilidad del uso de mayúsculas y minúsculas.", "Accept" : "Aceptar", "Reject" : "Rechazar", "Incoming ownership transfer from {user}" : "Solicitud de transferencia de propiedad entrante de {user}", diff --git a/apps/files/l10n/es_MX.json b/apps/files/l10n/es_MX.json index 55fb7978b5f..d92831dec3d 100644 --- a/apps/files/l10n/es_MX.json +++ b/apps/files/l10n/es_MX.json @@ -155,6 +155,10 @@ "A file or folder has been <strong>changed</strong>" : "Un archivo o carpeta ha sido <strong>cambiado</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Un archivo o carpeta favorito ha sido <strong>cambiado</strong>", "Upload (max. %s)" : "Cargar (max. %s)", + "Files compatibility" : "Compatibilidad de archivos", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Permitir restringir los nombres de archivos para asegurar que los archivos se puedan sincronizar con todos los clientes. Por defecto, se permiten todos los nombres de archivos válidos en POSIX (por ejemplo, Linux o macOS).", + "Enforce Windows compatibility" : "Imponer la compatibilidad de Windows", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Esto bloqueará los nombres de archivos inválidos en sistemas Windows, tales como usar nombres reservados o caracteres especiales. Pero no impondrá la compatibilidad del uso de mayúsculas y minúsculas.", "Accept" : "Aceptar", "Reject" : "Rechazar", "Incoming ownership transfer from {user}" : "Solicitud de transferencia de propiedad entrante de {user}", diff --git a/apps/files/l10n/ga.js b/apps/files/l10n/ga.js index 1cbe668b99d..b95e2a24e9a 100644 --- a/apps/files/l10n/ga.js +++ b/apps/files/l10n/ga.js @@ -157,6 +157,10 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong>" : "<strong>Athraíodh</strong>comhad nó fillteán", "A favorite file or folder has been <strong>changed</strong>" : "<strong>Athraíodh</strong>comhad nó fillteán is fearr leat", "Upload (max. %s)" : "Uaslódáil (%s ar a mhéad)", + "Files compatibility" : "Comhoiriúnacht comhaid", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Ceadaigh comhaid a shrianadh lena chinntiú gur féidir comhaid a shioncronú le gach cliant. De réir réamhshocraithe ceadaítear gach comhadainm atá bailí ar POSIX (m.sh. Linux nó macOS).", + "Enforce Windows compatibility" : "Comhoiriúnacht Windows a fhorfheidhmiú", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Cuirfidh sé seo bac ar ainmneacha comhaid nach bhfuil bailí ar chórais Windows, ar nós ainmneacha forchoimeádta nó carachtair speisialta a úsáid. Ach ní chuirfidh sé seo i bhfeidhm comhoiriúnacht íogaireacht cáis.", "Accept" : "Glac", "Reject" : "Diúltaigh", "Incoming ownership transfer from {user}" : "Aistriú úinéireachta isteach ó {user}", diff --git a/apps/files/l10n/ga.json b/apps/files/l10n/ga.json index 6dce210b293..05f66c92f4a 100644 --- a/apps/files/l10n/ga.json +++ b/apps/files/l10n/ga.json @@ -155,6 +155,10 @@ "A file or folder has been <strong>changed</strong>" : "<strong>Athraíodh</strong>comhad nó fillteán", "A favorite file or folder has been <strong>changed</strong>" : "<strong>Athraíodh</strong>comhad nó fillteán is fearr leat", "Upload (max. %s)" : "Uaslódáil (%s ar a mhéad)", + "Files compatibility" : "Comhoiriúnacht comhaid", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Ceadaigh comhaid a shrianadh lena chinntiú gur féidir comhaid a shioncronú le gach cliant. De réir réamhshocraithe ceadaítear gach comhadainm atá bailí ar POSIX (m.sh. Linux nó macOS).", + "Enforce Windows compatibility" : "Comhoiriúnacht Windows a fhorfheidhmiú", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Cuirfidh sé seo bac ar ainmneacha comhaid nach bhfuil bailí ar chórais Windows, ar nós ainmneacha forchoimeádta nó carachtair speisialta a úsáid. Ach ní chuirfidh sé seo i bhfeidhm comhoiriúnacht íogaireacht cáis.", "Accept" : "Glac", "Reject" : "Diúltaigh", "Incoming ownership transfer from {user}" : "Aistriú úinéireachta isteach ó {user}", diff --git a/apps/files/l10n/gl.js b/apps/files/l10n/gl.js index a3732b3efbd..258d0b23334 100644 --- a/apps/files/l10n/gl.js +++ b/apps/files/l10n/gl.js @@ -157,6 +157,10 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong>" : "<strong>Cambiouse</strong> un ficheiro ou cartafol", "A favorite file or folder has been <strong>changed</strong>" : "<strong>Cambiouse</strong> un ficheiro ou cartafol favorito", "Upload (max. %s)" : "Envío (máx. %s)", + "Files compatibility" : "Compatibilidade de ficheiros", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Permitir restrinxir os nomes de ficheiros para garantir que os ficheiros se poidan sincronizar con todos os clientes. De xeito predeterminado, permítense todos os nomes de ficheiro válidos en POSIX (p. ex., Linux ou macOS).", + "Enforce Windows compatibility" : "Forzar a compatibilidade con Windows", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Isto bloqueará os nomes de ficheiros non válidos en sistemas Windows, coma o uso de nomes reservados ou caracteres especiais. Porén, isto non forzará á compatibilidade da distinción entre maiúsculas e minúsculas.", "Accept" : "Aceptar", "Reject" : "Rexeitar", "Incoming ownership transfer from {user}" : "Transferencia da propiedade entrante de {user}", diff --git a/apps/files/l10n/gl.json b/apps/files/l10n/gl.json index 54a00520bdf..d6f9cbed32a 100644 --- a/apps/files/l10n/gl.json +++ b/apps/files/l10n/gl.json @@ -155,6 +155,10 @@ "A file or folder has been <strong>changed</strong>" : "<strong>Cambiouse</strong> un ficheiro ou cartafol", "A favorite file or folder has been <strong>changed</strong>" : "<strong>Cambiouse</strong> un ficheiro ou cartafol favorito", "Upload (max. %s)" : "Envío (máx. %s)", + "Files compatibility" : "Compatibilidade de ficheiros", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Permitir restrinxir os nomes de ficheiros para garantir que os ficheiros se poidan sincronizar con todos os clientes. De xeito predeterminado, permítense todos os nomes de ficheiro válidos en POSIX (p. ex., Linux ou macOS).", + "Enforce Windows compatibility" : "Forzar a compatibilidade con Windows", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Isto bloqueará os nomes de ficheiros non válidos en sistemas Windows, coma o uso de nomes reservados ou caracteres especiais. Porén, isto non forzará á compatibilidade da distinción entre maiúsculas e minúsculas.", "Accept" : "Aceptar", "Reject" : "Rexeitar", "Incoming ownership transfer from {user}" : "Transferencia da propiedade entrante de {user}", diff --git a/apps/files/l10n/nb.js b/apps/files/l10n/nb.js index af80d835f2c..8f59ee71639 100644 --- a/apps/files/l10n/nb.js +++ b/apps/files/l10n/nb.js @@ -157,6 +157,10 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong>" : "En fil eller mappe ble <strong>endret</strong>", "A favorite file or folder has been <strong>changed</strong>" : "En favoritt-fil eller mappe har blitt <strong>endret</strong>", "Upload (max. %s)" : "Opplasting (maks %s)", + "Files compatibility" : "Kompatibilitet med filer", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Tillat å begrense filnavn for å sikre at filer kan synkroniseres med alle klienter. Som standard er alle filnavn gyldige på POSIX (f.eks. Linux eller macOS) tillatt.", + "Enforce Windows compatibility" : "Håndhev Windows-kompatibilitet", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Dette vil blokkere filnavn som ikke er gyldige på Windows-systemer, for eksempel å bruke reserverte navn eller spesialtegn. Men dette vil ikke håndheve kompatibiliteten til store og små bokstaver.", "Accept" : "Aksepter", "Reject" : "Avvis", "Incoming ownership transfer from {user}" : "Ny eierskapsoverføring fra {user}", diff --git a/apps/files/l10n/nb.json b/apps/files/l10n/nb.json index 6a49c09d4ac..d793c92aeb4 100644 --- a/apps/files/l10n/nb.json +++ b/apps/files/l10n/nb.json @@ -155,6 +155,10 @@ "A file or folder has been <strong>changed</strong>" : "En fil eller mappe ble <strong>endret</strong>", "A favorite file or folder has been <strong>changed</strong>" : "En favoritt-fil eller mappe har blitt <strong>endret</strong>", "Upload (max. %s)" : "Opplasting (maks %s)", + "Files compatibility" : "Kompatibilitet med filer", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Tillat å begrense filnavn for å sikre at filer kan synkroniseres med alle klienter. Som standard er alle filnavn gyldige på POSIX (f.eks. Linux eller macOS) tillatt.", + "Enforce Windows compatibility" : "Håndhev Windows-kompatibilitet", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Dette vil blokkere filnavn som ikke er gyldige på Windows-systemer, for eksempel å bruke reserverte navn eller spesialtegn. Men dette vil ikke håndheve kompatibiliteten til store og små bokstaver.", "Accept" : "Aksepter", "Reject" : "Avvis", "Incoming ownership transfer from {user}" : "Ny eierskapsoverføring fra {user}", diff --git a/apps/files/l10n/ru.js b/apps/files/l10n/ru.js index 447e2f03b52..1545adf32ef 100644 --- a/apps/files/l10n/ru.js +++ b/apps/files/l10n/ru.js @@ -157,10 +157,16 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong>" : "<strong>Изменён</strong> файл или каталог", "A favorite file or folder has been <strong>changed</strong>" : "<strong>Изменён</strong> файл или папка отмеченные как избранное", "Upload (max. %s)" : "Загрузка (максимум %s)", + "Files compatibility" : "Совместимость файлов", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Разрешить ограничения на имена файлов для обеспечения возможности их синхронизации со всеми клиентами. По умолчанию разрешены все имена файлов, допустимые в POSIX (например, в Linux или macOS).", + "Enforce Windows compatibility" : "Обеспечить совместимость с Windows", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Это позволит блокировать имена файлов, недопустимые в системах Windows, например, использующие зарезервированные имена или специальные символы. Однако это не обеспечит совместимость в части чувствительности к регистру.", "Accept" : "Принять", "Reject" : "Отклонить", "Incoming ownership transfer from {user}" : "Запрос передачи владения от пользователя {user}", "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Принять владение {path}?\n\nПримечание: процесс переноса может занять до одного часа.", + "Ownership transfer denied" : "Передача владения отклонена", + "Your ownership transfer of {path} was denied by {user}." : "Передача владения {path} отклонена {user}.", "Ownership transfer failed" : "Не удалось передать владение", "Your ownership transfer of {path} to {user} failed." : "Вам не удалось передать владение «{path}» пользователю {user}.", "The ownership transfer of {path} from {user} failed." : "Пользователю {user} не удалось передать владение «{path}».", @@ -168,6 +174,7 @@ OC.L10N.register( "Your ownership transfer of {path} to {user} has completed." : "Завершена передача владения «{path}» от вас пользователю {user}.", "The ownership transfer of {path} from {user} has completed." : "Завершена передача владения «{path}» от пользователя {user}.", "in %s" : "в %s", + "Transferred from %1$s on %2$s" : "Передано от %1$s %2$s", "File Management" : "Управление файлами", "Current directory path" : "Текущий путь к каталогу", "Reload current directory" : "Обновить текущий каталог", @@ -254,7 +261,7 @@ OC.L10N.register( "WebDAV URL" : "Ссылка WebDAV", "Copy to clipboard" : "Копировать в буфер", "Use this address to access your Files via WebDAV" : "Используйте этот адрес для подключения WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Если вы используете двухфакторную аутентификацию, то нажмите здесь чтобы создать пароль приложения.", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Если вы включили двухфакторную аутентификацию, то нажмите здесь, чтобы создать пароль приложения.", "Clipboard is not available" : "Буфер обмена недоступен", "WebDAV URL copied to clipboard" : "Ссылка CalDAV скопирована в буфер обмена", "Unable to change the favourite state of the file" : "Не удалось изменить состояние «избранный» этого файла.", diff --git a/apps/files/l10n/ru.json b/apps/files/l10n/ru.json index 7b78a97096a..bba6bda3303 100644 --- a/apps/files/l10n/ru.json +++ b/apps/files/l10n/ru.json @@ -155,10 +155,16 @@ "A file or folder has been <strong>changed</strong>" : "<strong>Изменён</strong> файл или каталог", "A favorite file or folder has been <strong>changed</strong>" : "<strong>Изменён</strong> файл или папка отмеченные как избранное", "Upload (max. %s)" : "Загрузка (максимум %s)", + "Files compatibility" : "Совместимость файлов", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Разрешить ограничения на имена файлов для обеспечения возможности их синхронизации со всеми клиентами. По умолчанию разрешены все имена файлов, допустимые в POSIX (например, в Linux или macOS).", + "Enforce Windows compatibility" : "Обеспечить совместимость с Windows", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Это позволит блокировать имена файлов, недопустимые в системах Windows, например, использующие зарезервированные имена или специальные символы. Однако это не обеспечит совместимость в части чувствительности к регистру.", "Accept" : "Принять", "Reject" : "Отклонить", "Incoming ownership transfer from {user}" : "Запрос передачи владения от пользователя {user}", "Do you want to accept {path}?\n\nNote: The transfer process after accepting may take up to 1 hour." : "Принять владение {path}?\n\nПримечание: процесс переноса может занять до одного часа.", + "Ownership transfer denied" : "Передача владения отклонена", + "Your ownership transfer of {path} was denied by {user}." : "Передача владения {path} отклонена {user}.", "Ownership transfer failed" : "Не удалось передать владение", "Your ownership transfer of {path} to {user} failed." : "Вам не удалось передать владение «{path}» пользователю {user}.", "The ownership transfer of {path} from {user} failed." : "Пользователю {user} не удалось передать владение «{path}».", @@ -166,6 +172,7 @@ "Your ownership transfer of {path} to {user} has completed." : "Завершена передача владения «{path}» от вас пользователю {user}.", "The ownership transfer of {path} from {user} has completed." : "Завершена передача владения «{path}» от пользователя {user}.", "in %s" : "в %s", + "Transferred from %1$s on %2$s" : "Передано от %1$s %2$s", "File Management" : "Управление файлами", "Current directory path" : "Текущий путь к каталогу", "Reload current directory" : "Обновить текущий каталог", @@ -252,7 +259,7 @@ "WebDAV URL" : "Ссылка WebDAV", "Copy to clipboard" : "Копировать в буфер", "Use this address to access your Files via WebDAV" : "Используйте этот адрес для подключения WebDAV", - "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Если вы используете двухфакторную аутентификацию, то нажмите здесь чтобы создать пароль приложения.", + "If you have enabled 2FA, you must create and use a new app password by clicking here." : "Если вы включили двухфакторную аутентификацию, то нажмите здесь, чтобы создать пароль приложения.", "Clipboard is not available" : "Буфер обмена недоступен", "WebDAV URL copied to clipboard" : "Ссылка CalDAV скопирована в буфер обмена", "Unable to change the favourite state of the file" : "Не удалось изменить состояние «избранный» этого файла.", diff --git a/apps/files/l10n/sv.js b/apps/files/l10n/sv.js index 9ed04ab24a8..a66e60f86f9 100644 --- a/apps/files/l10n/sv.js +++ b/apps/files/l10n/sv.js @@ -157,6 +157,10 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong>" : "En ny fil eller mapp har blivit <strong>ändrad</strong>", "A favorite file or folder has been <strong>changed</strong>" : "En favorit-fil eller mapp har blivit <strong>ändrad</strong>", "Upload (max. %s)" : "Ladda upp (högst %s)", + "Files compatibility" : "Filkompatibilitet", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Tillåt att begränsa filnamn för att säkerställa att filer kan synkroniseras med alla klienter. Som standard är alla filnamn som är giltiga på POSIX (t.ex. Linux eller macOS) tillåtna.", + "Enforce Windows compatibility" : "Tvinga Windows-kompatibilitet", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Detta kommer att blockera filnamn som inte är giltiga på Windows-system, som att använda reserverade namn eller specialtecken. Men detta kommer inte att framtvinga kompatibiliteten för skiftlägeskänslighet.", "Accept" : "Acceptera", "Reject" : "Avvisa", "Incoming ownership transfer from {user}" : "Inkommande ägaröverföring från {user}", diff --git a/apps/files/l10n/sv.json b/apps/files/l10n/sv.json index 15abb05b4db..bb0c389d7d2 100644 --- a/apps/files/l10n/sv.json +++ b/apps/files/l10n/sv.json @@ -155,6 +155,10 @@ "A file or folder has been <strong>changed</strong>" : "En ny fil eller mapp har blivit <strong>ändrad</strong>", "A favorite file or folder has been <strong>changed</strong>" : "En favorit-fil eller mapp har blivit <strong>ändrad</strong>", "Upload (max. %s)" : "Ladda upp (högst %s)", + "Files compatibility" : "Filkompatibilitet", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "Tillåt att begränsa filnamn för att säkerställa att filer kan synkroniseras med alla klienter. Som standard är alla filnamn som är giltiga på POSIX (t.ex. Linux eller macOS) tillåtna.", + "Enforce Windows compatibility" : "Tvinga Windows-kompatibilitet", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "Detta kommer att blockera filnamn som inte är giltiga på Windows-system, som att använda reserverade namn eller specialtecken. Men detta kommer inte att framtvinga kompatibiliteten för skiftlägeskänslighet.", "Accept" : "Acceptera", "Reject" : "Avvisa", "Incoming ownership transfer from {user}" : "Inkommande ägaröverföring från {user}", diff --git a/apps/files/l10n/zh_HK.js b/apps/files/l10n/zh_HK.js index f5d4b9fadea..3f5d013cf8a 100644 --- a/apps/files/l10n/zh_HK.js +++ b/apps/files/l10n/zh_HK.js @@ -157,6 +157,10 @@ OC.L10N.register( "A file or folder has been <strong>changed</strong>" : "檔案或資料夾有所<strong>更改</strong>", "A favorite file or folder has been <strong>changed</strong>" : "收藏的檔案或資料夾有所<strong>更改</strong>", "Upload (max. %s)" : "上傳(上限 %s)", + "Files compatibility" : "檔案兼容性", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "允許限製檔案名稱以確保檔案可以與所有客戶端同步。默認情況下,允許 POSIX(例如 Linux 或 macOS)上有效的所有檔案名稱。", + "Enforce Windows compatibility" : "實施 Windows 兼容性", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "這將阻止在 Windows 系統上無效的檔案名,例如使用保留名稱或特殊字元。但這不會強制區分大小寫的兼容性。", "Accept" : "接受", "Reject" : "拒絕", "Incoming ownership transfer from {user}" : "來自 {user} 的擁有權轉移", diff --git a/apps/files/l10n/zh_HK.json b/apps/files/l10n/zh_HK.json index ce2583d1fbb..62779dcb373 100644 --- a/apps/files/l10n/zh_HK.json +++ b/apps/files/l10n/zh_HK.json @@ -155,6 +155,10 @@ "A file or folder has been <strong>changed</strong>" : "檔案或資料夾有所<strong>更改</strong>", "A favorite file or folder has been <strong>changed</strong>" : "收藏的檔案或資料夾有所<strong>更改</strong>", "Upload (max. %s)" : "上傳(上限 %s)", + "Files compatibility" : "檔案兼容性", + "Allow to restrict filenames to ensure files can be synced with all clients. By default all filenames valid on POSIX (e.g. Linux or macOS) are allowed." : "允許限製檔案名稱以確保檔案可以與所有客戶端同步。默認情況下,允許 POSIX(例如 Linux 或 macOS)上有效的所有檔案名稱。", + "Enforce Windows compatibility" : "實施 Windows 兼容性", + "This will block filenames not valid on Windows systems, like using reserved names or special characters. But this will not enforce compatibility of case sensitivity." : "這將阻止在 Windows 系統上無效的檔案名,例如使用保留名稱或特殊字元。但這不會強制區分大小寫的兼容性。", "Accept" : "接受", "Reject" : "拒絕", "Incoming ownership transfer from {user}" : "來自 {user} 的擁有權轉移", diff --git a/apps/files_sharing/l10n/ar.js b/apps/files_sharing/l10n/ar.js index 45444a5b3e9..e19577906d1 100644 --- a/apps/files_sharing/l10n/ar.js +++ b/apps/files_sharing/l10n/ar.js @@ -126,21 +126,21 @@ OC.L10N.register( "Accept" : "قبول", "Decline" : "رفض", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "يُمكِّن هذا التطبيق الأشخاص من مشاركة الملفات داخل نكست كلاود. عند تمكينه، يُمكِّن المشرف تحديد المجموعات التي يمكنها مشاركة الملفات. يمكن للأشخاص المعنيين بعد ذلك مشاركة الملفات والمجلدات مع حسابات ومجموعات أخرى داخل نكست كلاود. بالإضافة إلى ذلك، إذا قام المشرف بتمكين ميزة رابط المشاركة، فيمكن استخدام رابط خارجي لمشاركة الملفات مع أشخاص آخرين خارج نكست كلاود. يمكن للمشرفين أيضًا فرض كلمات المرور و تواريخ انتهاء الصلاحية و تمكين المشاركة من خادوم إلى خادوم عبر روابط المشاركة؛ بالإضافة إلى المشاركة من الأجهزة المحمولة. بالمقابل، يؤدي تعطيل التطبيق إلى إزالة الملفات والمجلدات المشتركة على الخادوم لدي جميع مستلمي المشاركة، و كذلك على عملاء المزامنة و تطبيقات الأجهزة المحمولة. \nللمزيد من المعلومات، أنظُر توثيق نكست كلاود.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "مشرف النظام عندك قام بفرض تاريخ لانتهاء الصلاحية لا يتعدى {days} يوم.", "When should the request expire?" : "متى يجب أن تنتهي صلاحية الطلب؟", - "Set a submission expirationDate" : "عيِّن تاريخ انتهاء صلاحية للإرسالية", + "Set a submission expiration date" : "تعيين وقت انتهاء صلاحية الإرسال", "Expiration date" : "تاريخ إنتهاء صلاحية المشاركة", "Select a date" : "إختَر تاريخاً", - "Your administrator has enforced a password protection." : "مشرف النظام عندك قام بفرض الحماية عن طريق كلمة المرور", + "Your administrator has enforced a {count} days expiration policy." : "قام مشرفك بفرض سياسة {count} أيام لانتهاء الصلاحية.", "What password should be used for the request?" : "هل يجب استعمال كلمة مرور لهذا الطلب؟", "Set a password" : "تعيين كلمة المرور", "Password" : "كلمة المرور", "Enter a valid password" : "أدخِل كلمة مرور صحيحة", "Generate a new password" : "توليد كلمة مرور جديدة", + "Your administrator has enforced a password protection." : "مشرف النظام عندك قام بفرض الحماية عن طريق كلمة المرور", "The request will expire on {date} at midnight and will be password protected." : "سوف تنتهي صلاحية الطلب في {date} عند منتصف الليل، و سيكون محميّاً بكلمة مرور.", "The request will expire on {date} at midnight." : "سوف تنتهي صلاحية الطلب في {date} عند منتصف الليل.", "The request will be password protected." : "سوف يكون الطلب محميّاً بكلمة مرور.", - "Once created, you can share the link below to allow people to upload files to your directory." : "بمجرد الإنشاء، يمكنك مشاركة الرابط أدناه للسماح للأشخاص بتحميل الملفات إلى الدليل الخاص بك.", + "You can now share the link below to allow people to upload files to your directory." : "يمكنك الآن مشاركة الرابط أدناه للسماح للأشخاص برفع الملفات إلى دليلك.", "Share link" : "رابط المشاركة", "Copy to clipboard" : "نسخ الرابط إلى الحافظة", "Send link via email" : "إرسال رابط عبر الإيميل", @@ -156,31 +156,33 @@ OC.L10N.register( "Request subject" : "موضوع الطلب", "Birthday party photos, History assignment…" : "صور حفلات الميلاد، أو تاريخ المهام، ....", "Where should these files go?" : "أين يجب أن يتم نقل هذه الملفات؟", - "The uploaded files are visible only to you unless you choose to share them." : "الملفات المرفوعة تكون ظاهرةً لك إلّا إذا قررت مشاركتها", "Upload destination" : "مَقصِد رفع الملفات", "Select a destination" : "إختَر المَقصِد", "Revert to default" : "عُد إلى التلقائي", + "The uploaded files are visible only to you unless you choose to share them." : "الملفات المرفوعة تكون ظاهرةً لك إلّا إذا قررت مشاركتها", "Add a note" : "أضِف ملاحظةً", "Note for recipient" : "ملاحظة للمُستَلِم", "Add a note to help people understand what you are requesting." : "أضِف ملاحظة لتوضح للآخرين ما تطلبه", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "يمكنك إضافة روابط أو تاريخ أو أي معلومات أخرى من شأنها أن تساعد المستلم على فهم ما تطلبه.", "Select" : "حدِّد", "Create a file request" : "إنشاء طلب لملف", "File request created" : "تمّ إنشاء طلب لملف", "Collect files from others even if they do not have an account." : "جمِّع الملفات من الآخرين حتى لو لم يكونوا يملكون حساباتٍ", "To ensure you can receive files, verify you have enough storage available." : "لضمان استلامك للملفات، تحقَّق من كفاية حصتك التخزينية.", "File request" : "طلب الملف", + "Previous step" : "الخطوة السابقة", "Cancel" : "إلغاء", "Cancel the file request creation" : "إلغاء عملية إنشاء طلب الملف", - "Previous step" : "الخطوة السابقة", - "Continue" : "مُتابعة", + "Close without sending emails" : "أغلِق بدون إرسال إيميلات", "Close" : "إغلاق", + "Continue" : "مُتابعة", "Please select a folder, you cannot share the root directory." : "من فضلك، إختَر مجلداً. لا يمكنك مشاركة الدليل الجذر.", - "File request created and emails sent" : "تمّ إنشاء طلب الملف و تمّ إرسال الإيميلات", "Error creating the share: {errorMessage}" : "خطأ في إنشاء المشاركة: {errorMessage}", "Error creating the share" : "خطأ في إنشاء المشاركة", "Error sending emails: {errorMessage}" : "حدث خطأ في إرسال الإيميلات: {errorMessage}", "Error sending emails" : "حدث خطأ في إرسال الإيميلات", - "_Close and send email_::_Close and send {count} emails_" : ["أغلِق و أرسِل{count} إيميل","أغلِق و أرسِل الإيميل","أغلِق و أرسِل {count} إيميل","أغلِق و أرسِل {count} إيميلات","أغلِق و أرسِل {count} إيميلات","أغلِق و أرسِل {count} إيميلات"], + "_Send email and close_::_Send {count} emails and close_" : ["أرسِل {count} إيميل ثم أغلِق","أرسِل الإيميل ثم أغلِق","أرسِل {count} إيميل ثم أغلِق","أرسِل {count} إيميلات ثم أغلِق","أرسِل {count} إيميلات ثم أغلِق","أرسِل {count} إيميلات ثم أغلِق"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["تمّ إنشاء طلب للملف، و تمّ إرسال {count} إيميل","تمّ إنشاء طلب للملف، و تمّ إرسال الإيميل","تمّ إنشاء طلب للملف، و تمّ إرسال {count} إيميل","تمّ إنشاء طلب للملف، و تمّ إرسال {count} إيميلات","تمّ إنشاء طلب للملف، و تمّ إرسال {count} إيميلات","تمّ إنشاء طلب للملف، و تمّ إرسال {count} إيميلات"], "Sharing" : "المشاركة", "Accept shares from other accounts and groups by default" : "إقبَل المشاركات من حسابات و مجموعات أخرى بشكل تلقائي ", "Error while toggling options" : "خطأ أثناء تبديل الخيارات", @@ -251,6 +253,11 @@ OC.L10N.register( "Deck board" : "الرُّقْعَة Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "على {server}", + "{ownerDisplayName} shared a folder with you." : "قام {ownerDisplayName} بمشاركة مجلد معك.", + "To upload files, you need to provide your name first." : "لرفع الملفات، يجب أن تكتب اسمك أوّلاً.", + "Enter your name" : "أدخِل اسمك", + "Submit name" : "إرسال الاسم", + "Upload files to {folder}" : "رفع ملفات إلى {folder}", "Allow upload and editing" : "السماح بالرفع و التعديل", "Allow editing" : "إسمَح بالتعدل", "Upload only" : "رفع فقط", @@ -303,7 +310,7 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "الملف \"{path}\" تمّ إلغاء مشاركته", "Folder \"{path}\" has been unshared" : "المجلّد \"{path}\" تمّ إلغاء مشاركته", "Share {propertyName} saved" : "المُشارَكة {propertyName} تمّ حفظها", - "Create new file request" : "إنشاء طلب جديد لملف", + "Create file request" : "إنشاء طلب ملف", "Shared by" : "تمّت مشاركته من قِبَل", "Shared with" : "تمّت مشاركته مع", "Password created successfully" : "تمّ إنشاء كلمة المرور بنجاح", @@ -338,6 +345,7 @@ OC.L10N.register( "Shares you have received but not approved will show up here" : "المشاركات التي تلقَّيْتَ دعواتها لكنك لم توافق بعدُ عليها ستظهر هنا", "Share note" : "ملاحظة عن المشاركة", "Upload files to %s" : "رَفْعُ ملفات إلى %s", + "%s shared a folder with you." : "قام %s بمشاركة مجلد معك.", "Note" : "ملاحظة", "Select or drop files" : "إختَر أو أفلِت ملفات", "Uploading files" : "رَفْعُ الملفات جارٍ ...", diff --git a/apps/files_sharing/l10n/ar.json b/apps/files_sharing/l10n/ar.json index 22d697b3e17..2a4daab03fe 100644 --- a/apps/files_sharing/l10n/ar.json +++ b/apps/files_sharing/l10n/ar.json @@ -124,21 +124,21 @@ "Accept" : "قبول", "Decline" : "رفض", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "يُمكِّن هذا التطبيق الأشخاص من مشاركة الملفات داخل نكست كلاود. عند تمكينه، يُمكِّن المشرف تحديد المجموعات التي يمكنها مشاركة الملفات. يمكن للأشخاص المعنيين بعد ذلك مشاركة الملفات والمجلدات مع حسابات ومجموعات أخرى داخل نكست كلاود. بالإضافة إلى ذلك، إذا قام المشرف بتمكين ميزة رابط المشاركة، فيمكن استخدام رابط خارجي لمشاركة الملفات مع أشخاص آخرين خارج نكست كلاود. يمكن للمشرفين أيضًا فرض كلمات المرور و تواريخ انتهاء الصلاحية و تمكين المشاركة من خادوم إلى خادوم عبر روابط المشاركة؛ بالإضافة إلى المشاركة من الأجهزة المحمولة. بالمقابل، يؤدي تعطيل التطبيق إلى إزالة الملفات والمجلدات المشتركة على الخادوم لدي جميع مستلمي المشاركة، و كذلك على عملاء المزامنة و تطبيقات الأجهزة المحمولة. \nللمزيد من المعلومات، أنظُر توثيق نكست كلاود.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "مشرف النظام عندك قام بفرض تاريخ لانتهاء الصلاحية لا يتعدى {days} يوم.", "When should the request expire?" : "متى يجب أن تنتهي صلاحية الطلب؟", - "Set a submission expirationDate" : "عيِّن تاريخ انتهاء صلاحية للإرسالية", + "Set a submission expiration date" : "تعيين وقت انتهاء صلاحية الإرسال", "Expiration date" : "تاريخ إنتهاء صلاحية المشاركة", "Select a date" : "إختَر تاريخاً", - "Your administrator has enforced a password protection." : "مشرف النظام عندك قام بفرض الحماية عن طريق كلمة المرور", + "Your administrator has enforced a {count} days expiration policy." : "قام مشرفك بفرض سياسة {count} أيام لانتهاء الصلاحية.", "What password should be used for the request?" : "هل يجب استعمال كلمة مرور لهذا الطلب؟", "Set a password" : "تعيين كلمة المرور", "Password" : "كلمة المرور", "Enter a valid password" : "أدخِل كلمة مرور صحيحة", "Generate a new password" : "توليد كلمة مرور جديدة", + "Your administrator has enforced a password protection." : "مشرف النظام عندك قام بفرض الحماية عن طريق كلمة المرور", "The request will expire on {date} at midnight and will be password protected." : "سوف تنتهي صلاحية الطلب في {date} عند منتصف الليل، و سيكون محميّاً بكلمة مرور.", "The request will expire on {date} at midnight." : "سوف تنتهي صلاحية الطلب في {date} عند منتصف الليل.", "The request will be password protected." : "سوف يكون الطلب محميّاً بكلمة مرور.", - "Once created, you can share the link below to allow people to upload files to your directory." : "بمجرد الإنشاء، يمكنك مشاركة الرابط أدناه للسماح للأشخاص بتحميل الملفات إلى الدليل الخاص بك.", + "You can now share the link below to allow people to upload files to your directory." : "يمكنك الآن مشاركة الرابط أدناه للسماح للأشخاص برفع الملفات إلى دليلك.", "Share link" : "رابط المشاركة", "Copy to clipboard" : "نسخ الرابط إلى الحافظة", "Send link via email" : "إرسال رابط عبر الإيميل", @@ -154,31 +154,33 @@ "Request subject" : "موضوع الطلب", "Birthday party photos, History assignment…" : "صور حفلات الميلاد، أو تاريخ المهام، ....", "Where should these files go?" : "أين يجب أن يتم نقل هذه الملفات؟", - "The uploaded files are visible only to you unless you choose to share them." : "الملفات المرفوعة تكون ظاهرةً لك إلّا إذا قررت مشاركتها", "Upload destination" : "مَقصِد رفع الملفات", "Select a destination" : "إختَر المَقصِد", "Revert to default" : "عُد إلى التلقائي", + "The uploaded files are visible only to you unless you choose to share them." : "الملفات المرفوعة تكون ظاهرةً لك إلّا إذا قررت مشاركتها", "Add a note" : "أضِف ملاحظةً", "Note for recipient" : "ملاحظة للمُستَلِم", "Add a note to help people understand what you are requesting." : "أضِف ملاحظة لتوضح للآخرين ما تطلبه", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "يمكنك إضافة روابط أو تاريخ أو أي معلومات أخرى من شأنها أن تساعد المستلم على فهم ما تطلبه.", "Select" : "حدِّد", "Create a file request" : "إنشاء طلب لملف", "File request created" : "تمّ إنشاء طلب لملف", "Collect files from others even if they do not have an account." : "جمِّع الملفات من الآخرين حتى لو لم يكونوا يملكون حساباتٍ", "To ensure you can receive files, verify you have enough storage available." : "لضمان استلامك للملفات، تحقَّق من كفاية حصتك التخزينية.", "File request" : "طلب الملف", + "Previous step" : "الخطوة السابقة", "Cancel" : "إلغاء", "Cancel the file request creation" : "إلغاء عملية إنشاء طلب الملف", - "Previous step" : "الخطوة السابقة", - "Continue" : "مُتابعة", + "Close without sending emails" : "أغلِق بدون إرسال إيميلات", "Close" : "إغلاق", + "Continue" : "مُتابعة", "Please select a folder, you cannot share the root directory." : "من فضلك، إختَر مجلداً. لا يمكنك مشاركة الدليل الجذر.", - "File request created and emails sent" : "تمّ إنشاء طلب الملف و تمّ إرسال الإيميلات", "Error creating the share: {errorMessage}" : "خطأ في إنشاء المشاركة: {errorMessage}", "Error creating the share" : "خطأ في إنشاء المشاركة", "Error sending emails: {errorMessage}" : "حدث خطأ في إرسال الإيميلات: {errorMessage}", "Error sending emails" : "حدث خطأ في إرسال الإيميلات", - "_Close and send email_::_Close and send {count} emails_" : ["أغلِق و أرسِل{count} إيميل","أغلِق و أرسِل الإيميل","أغلِق و أرسِل {count} إيميل","أغلِق و أرسِل {count} إيميلات","أغلِق و أرسِل {count} إيميلات","أغلِق و أرسِل {count} إيميلات"], + "_Send email and close_::_Send {count} emails and close_" : ["أرسِل {count} إيميل ثم أغلِق","أرسِل الإيميل ثم أغلِق","أرسِل {count} إيميل ثم أغلِق","أرسِل {count} إيميلات ثم أغلِق","أرسِل {count} إيميلات ثم أغلِق","أرسِل {count} إيميلات ثم أغلِق"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["تمّ إنشاء طلب للملف، و تمّ إرسال {count} إيميل","تمّ إنشاء طلب للملف، و تمّ إرسال الإيميل","تمّ إنشاء طلب للملف، و تمّ إرسال {count} إيميل","تمّ إنشاء طلب للملف، و تمّ إرسال {count} إيميلات","تمّ إنشاء طلب للملف، و تمّ إرسال {count} إيميلات","تمّ إنشاء طلب للملف، و تمّ إرسال {count} إيميلات"], "Sharing" : "المشاركة", "Accept shares from other accounts and groups by default" : "إقبَل المشاركات من حسابات و مجموعات أخرى بشكل تلقائي ", "Error while toggling options" : "خطأ أثناء تبديل الخيارات", @@ -249,6 +251,11 @@ "Deck board" : "الرُّقْعَة Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "على {server}", + "{ownerDisplayName} shared a folder with you." : "قام {ownerDisplayName} بمشاركة مجلد معك.", + "To upload files, you need to provide your name first." : "لرفع الملفات، يجب أن تكتب اسمك أوّلاً.", + "Enter your name" : "أدخِل اسمك", + "Submit name" : "إرسال الاسم", + "Upload files to {folder}" : "رفع ملفات إلى {folder}", "Allow upload and editing" : "السماح بالرفع و التعديل", "Allow editing" : "إسمَح بالتعدل", "Upload only" : "رفع فقط", @@ -301,7 +308,7 @@ "File \"{path}\" has been unshared" : "الملف \"{path}\" تمّ إلغاء مشاركته", "Folder \"{path}\" has been unshared" : "المجلّد \"{path}\" تمّ إلغاء مشاركته", "Share {propertyName} saved" : "المُشارَكة {propertyName} تمّ حفظها", - "Create new file request" : "إنشاء طلب جديد لملف", + "Create file request" : "إنشاء طلب ملف", "Shared by" : "تمّت مشاركته من قِبَل", "Shared with" : "تمّت مشاركته مع", "Password created successfully" : "تمّ إنشاء كلمة المرور بنجاح", @@ -336,6 +343,7 @@ "Shares you have received but not approved will show up here" : "المشاركات التي تلقَّيْتَ دعواتها لكنك لم توافق بعدُ عليها ستظهر هنا", "Share note" : "ملاحظة عن المشاركة", "Upload files to %s" : "رَفْعُ ملفات إلى %s", + "%s shared a folder with you." : "قام %s بمشاركة مجلد معك.", "Note" : "ملاحظة", "Select or drop files" : "إختَر أو أفلِت ملفات", "Uploading files" : "رَفْعُ الملفات جارٍ ...", diff --git a/apps/files_sharing/l10n/ast.js b/apps/files_sharing/l10n/ast.js index f40f9b7d408..b4d0618ae39 100644 --- a/apps/files_sharing/l10n/ast.js +++ b/apps/files_sharing/l10n/ast.js @@ -133,18 +133,16 @@ OC.L10N.register( "Collect files from others even if they do not have an account." : "Coleiciona los ficheros d'otros magar que nun tengan una cuenta.", "To ensure you can receive files, verify you have enough storage available." : "P'asegura de que pues recibir ficheros, verifica que tienes abondu almacenamientu disponibles.", "File request" : "Solicitú de ficheru", + "Previous step" : "Pasu anterior", "Cancel" : "Encaboxar", "Cancel the file request creation" : "Encaboxar la creación de la solciitú de ficheru", - "Previous step" : "Pasu anterior", - "Continue" : "Siguir", "Close" : "Zarrar", + "Continue" : "Siguir", "Please select a folder, you cannot share the root directory." : "Seleiciona una carpeta. Nun pues compartir el direutoriu raigañu.", - "File request created and emails sent" : "Creóse la solicitú de ficheru y unviáronse los mensaxes", "Error creating the share: {errorMessage}" : "Hebo un error al crear la compartición: {errorMessage}", "Error creating the share" : "Hebo un error al crear la compartición", "Error sending emails: {errorMessage}" : "Hebo un error al unviar los mensaxes: {errorMessage}", "Error sending emails" : "Hebo un error al unviar los mensaxes", - "_Close and send email_::_Close and send {count} emails_" : ["Zarrar y unviar el mensaxe","Zarrar y unviar {count} mensaxes"], "Sharing" : "Compartición", "Accept shares from other accounts and groups by default" : "Aceptar elementos compartíos d'otres cuentes y grupos por defeutu", "Error while toggling options" : "Hebo un error mentanto s'alternaba les opciones", @@ -267,7 +265,6 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "El camín «{path}» dexó compartise", "Folder \"{path}\" has been unshared" : "La carpeta «{folder}» dexó de compartise", "Share {propertyName} saved" : "Guardóse la compartición «{propertyName}»", - "Create new file request" : "Crear una solicitú de ficheru", "Shared by" : "Compartíu por", "Shared with" : "Compartióse con", "Password created successfully" : "La contraseña creóse correutamente", diff --git a/apps/files_sharing/l10n/ast.json b/apps/files_sharing/l10n/ast.json index 8ce528d5a47..3d24670c0c8 100644 --- a/apps/files_sharing/l10n/ast.json +++ b/apps/files_sharing/l10n/ast.json @@ -131,18 +131,16 @@ "Collect files from others even if they do not have an account." : "Coleiciona los ficheros d'otros magar que nun tengan una cuenta.", "To ensure you can receive files, verify you have enough storage available." : "P'asegura de que pues recibir ficheros, verifica que tienes abondu almacenamientu disponibles.", "File request" : "Solicitú de ficheru", + "Previous step" : "Pasu anterior", "Cancel" : "Encaboxar", "Cancel the file request creation" : "Encaboxar la creación de la solciitú de ficheru", - "Previous step" : "Pasu anterior", - "Continue" : "Siguir", "Close" : "Zarrar", + "Continue" : "Siguir", "Please select a folder, you cannot share the root directory." : "Seleiciona una carpeta. Nun pues compartir el direutoriu raigañu.", - "File request created and emails sent" : "Creóse la solicitú de ficheru y unviáronse los mensaxes", "Error creating the share: {errorMessage}" : "Hebo un error al crear la compartición: {errorMessage}", "Error creating the share" : "Hebo un error al crear la compartición", "Error sending emails: {errorMessage}" : "Hebo un error al unviar los mensaxes: {errorMessage}", "Error sending emails" : "Hebo un error al unviar los mensaxes", - "_Close and send email_::_Close and send {count} emails_" : ["Zarrar y unviar el mensaxe","Zarrar y unviar {count} mensaxes"], "Sharing" : "Compartición", "Accept shares from other accounts and groups by default" : "Aceptar elementos compartíos d'otres cuentes y grupos por defeutu", "Error while toggling options" : "Hebo un error mentanto s'alternaba les opciones", @@ -265,7 +263,6 @@ "File \"{path}\" has been unshared" : "El camín «{path}» dexó compartise", "Folder \"{path}\" has been unshared" : "La carpeta «{folder}» dexó de compartise", "Share {propertyName} saved" : "Guardóse la compartición «{propertyName}»", - "Create new file request" : "Crear una solicitú de ficheru", "Shared by" : "Compartíu por", "Shared with" : "Compartióse con", "Password created successfully" : "La contraseña creóse correutamente", diff --git a/apps/files_sharing/l10n/bg.js b/apps/files_sharing/l10n/bg.js index 616d6eb21d4..1cb63c64366 100644 --- a/apps/files_sharing/l10n/bg.js +++ b/apps/files_sharing/l10n/bg.js @@ -122,8 +122,8 @@ OC.L10N.register( "Link copied to clipboard" : "Връзката е копирана в клипборда", "Select" : "Избери", "Cancel" : "Отказ", - "Continue" : "Продължаване", "Close" : "Затваряне", + "Continue" : "Продължаване", "Error creating the share: {errorMessage}" : "Грешка при създаване на споделянето: {errorMessage}", "Error creating the share" : "Грешка при създаване на споделянето", "Sharing" : "Споделяне", @@ -186,6 +186,7 @@ OC.L10N.register( "Deck board" : "Deck табло", "ScienceMesh" : "ScienceMesh /приложение/", "on {server}" : "на {server}", + "Enter your name" : "Въведете вашето име", "Allow upload and editing" : "За качване и редактиране", "Allow editing" : "Разреши редактиране", "Advanced settings" : "Допълнителни настройки", diff --git a/apps/files_sharing/l10n/bg.json b/apps/files_sharing/l10n/bg.json index f0b9926209e..7df4ea293b4 100644 --- a/apps/files_sharing/l10n/bg.json +++ b/apps/files_sharing/l10n/bg.json @@ -120,8 +120,8 @@ "Link copied to clipboard" : "Връзката е копирана в клипборда", "Select" : "Избери", "Cancel" : "Отказ", - "Continue" : "Продължаване", "Close" : "Затваряне", + "Continue" : "Продължаване", "Error creating the share: {errorMessage}" : "Грешка при създаване на споделянето: {errorMessage}", "Error creating the share" : "Грешка при създаване на споделянето", "Sharing" : "Споделяне", @@ -184,6 +184,7 @@ "Deck board" : "Deck табло", "ScienceMesh" : "ScienceMesh /приложение/", "on {server}" : "на {server}", + "Enter your name" : "Въведете вашето име", "Allow upload and editing" : "За качване и редактиране", "Allow editing" : "Разреши редактиране", "Advanced settings" : "Допълнителни настройки", diff --git a/apps/files_sharing/l10n/ca.js b/apps/files_sharing/l10n/ca.js index 1c6c1c1d047..c6bdb4fc827 100644 --- a/apps/files_sharing/l10n/ca.js +++ b/apps/files_sharing/l10n/ca.js @@ -123,8 +123,8 @@ OC.L10N.register( "Copy to clipboard" : "Copia-ho al porta-retalls", "Link copied to clipboard" : "Enllaç copiat al porta-retalls", "Cancel" : "Cancel·la", - "Continue" : "Continuar", "Close" : "Tanca", + "Continue" : "Continuar", "Error creating the share: {errorMessage}" : "S'ha produït un error en crear l'element compartit: {errorMessage}", "Error creating the share" : "S'ha produït un error en crear l'element compartit", "Sharing" : "Ús compartit", @@ -195,6 +195,7 @@ OC.L10N.register( "Deck board" : "Tauler de Targetes", "ScienceMesh" : "ScienceMesh", "on {server}" : "a {server}", + "Enter your name" : "Introdueix el teu nom", "Allow upload and editing" : "Permet la pujada i l'edició", "Allow editing" : "Permet l'edició", "Upload only" : "Només pujada", diff --git a/apps/files_sharing/l10n/ca.json b/apps/files_sharing/l10n/ca.json index 286c9927c34..6b14d273787 100644 --- a/apps/files_sharing/l10n/ca.json +++ b/apps/files_sharing/l10n/ca.json @@ -121,8 +121,8 @@ "Copy to clipboard" : "Copia-ho al porta-retalls", "Link copied to clipboard" : "Enllaç copiat al porta-retalls", "Cancel" : "Cancel·la", - "Continue" : "Continuar", "Close" : "Tanca", + "Continue" : "Continuar", "Error creating the share: {errorMessage}" : "S'ha produït un error en crear l'element compartit: {errorMessage}", "Error creating the share" : "S'ha produït un error en crear l'element compartit", "Sharing" : "Ús compartit", @@ -193,6 +193,7 @@ "Deck board" : "Tauler de Targetes", "ScienceMesh" : "ScienceMesh", "on {server}" : "a {server}", + "Enter your name" : "Introdueix el teu nom", "Allow upload and editing" : "Permet la pujada i l'edició", "Allow editing" : "Permet l'edició", "Upload only" : "Només pujada", diff --git a/apps/files_sharing/l10n/cs.js b/apps/files_sharing/l10n/cs.js index dace02b3ef6..2450cb77aa3 100644 --- a/apps/files_sharing/l10n/cs.js +++ b/apps/files_sharing/l10n/cs.js @@ -122,8 +122,8 @@ OC.L10N.register( "Link copied to clipboard" : "Odkaz zkopírován do schánky", "Select" : "Vybrat", "Cancel" : "Storno", - "Continue" : "Pokračovat", "Close" : "Zavřít", + "Continue" : "Pokračovat", "Error creating the share: {errorMessage}" : "Chyba při vytváření sdílení: {errorMessage}", "Error creating the share" : "Chyba při vytváření sdílení", "Sharing" : "Sdílení", @@ -188,6 +188,7 @@ OC.L10N.register( "Deck board" : "Tabule aplikace Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "na {server}", + "Enter your name" : "Zadejte své jméno", "Allow upload and editing" : "Povolit nahrávání a úpravy", "Allow editing" : "Povolit úpravy", "Upload only" : "Pouze nahrávat", diff --git a/apps/files_sharing/l10n/cs.json b/apps/files_sharing/l10n/cs.json index 5b2bf553485..9c22774773e 100644 --- a/apps/files_sharing/l10n/cs.json +++ b/apps/files_sharing/l10n/cs.json @@ -120,8 +120,8 @@ "Link copied to clipboard" : "Odkaz zkopírován do schánky", "Select" : "Vybrat", "Cancel" : "Storno", - "Continue" : "Pokračovat", "Close" : "Zavřít", + "Continue" : "Pokračovat", "Error creating the share: {errorMessage}" : "Chyba při vytváření sdílení: {errorMessage}", "Error creating the share" : "Chyba při vytváření sdílení", "Sharing" : "Sdílení", @@ -186,6 +186,7 @@ "Deck board" : "Tabule aplikace Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "na {server}", + "Enter your name" : "Zadejte své jméno", "Allow upload and editing" : "Povolit nahrávání a úpravy", "Allow editing" : "Povolit úpravy", "Upload only" : "Pouze nahrávat", diff --git a/apps/files_sharing/l10n/da.js b/apps/files_sharing/l10n/da.js index fb618713eb9..b864e4fefff 100644 --- a/apps/files_sharing/l10n/da.js +++ b/apps/files_sharing/l10n/da.js @@ -115,8 +115,8 @@ OC.L10N.register( "Link copied to clipboard" : "Link kopieret til udklipsholder", "Select" : "Vælg", "Cancel" : "Annullér", - "Continue" : "Videre", "Close" : "Luk", + "Continue" : "Videre", "Error creating the share" : "Fejl ved skabelse af delt drev", "Sharing" : "Deling", "Reset" : "Nulstil", diff --git a/apps/files_sharing/l10n/da.json b/apps/files_sharing/l10n/da.json index 46301851a99..6b5a83dc794 100644 --- a/apps/files_sharing/l10n/da.json +++ b/apps/files_sharing/l10n/da.json @@ -113,8 +113,8 @@ "Link copied to clipboard" : "Link kopieret til udklipsholder", "Select" : "Vælg", "Cancel" : "Annullér", - "Continue" : "Videre", "Close" : "Luk", + "Continue" : "Videre", "Error creating the share" : "Fejl ved skabelse af delt drev", "Sharing" : "Deling", "Reset" : "Nulstil", diff --git a/apps/files_sharing/l10n/de.js b/apps/files_sharing/l10n/de.js index affc40c48d0..ff313e6e182 100644 --- a/apps/files_sharing/l10n/de.js +++ b/apps/files_sharing/l10n/de.js @@ -122,8 +122,8 @@ OC.L10N.register( "Link copied to clipboard" : "Link wurde in die Zwischenablage kopiert", "Select" : "Auswählen", "Cancel" : "Abbrechen", - "Continue" : "Fortsetzen", "Close" : "Schließen", + "Continue" : "Fortsetzen", "Error creating the share: {errorMessage}" : "Fehler beim Erstellen der Freigabe: {errorMessage}", "Error creating the share" : "Fehler beim Erstellen der Freigabe", "Sharing" : "Teilen", @@ -190,6 +190,7 @@ OC.L10N.register( "Deck board" : "Deck-Board", "ScienceMesh" : "ScienceMesh", "on {server}" : "auf {server}", + "Enter your name" : "Gib deinen Namen ein", "Allow upload and editing" : "Hochladen und Bearbeiten erlauben", "Allow editing" : "Bearbeitung erlauben", "Upload only" : "Nur hochladen", diff --git a/apps/files_sharing/l10n/de.json b/apps/files_sharing/l10n/de.json index 0210059cb3a..74dd80857ce 100644 --- a/apps/files_sharing/l10n/de.json +++ b/apps/files_sharing/l10n/de.json @@ -120,8 +120,8 @@ "Link copied to clipboard" : "Link wurde in die Zwischenablage kopiert", "Select" : "Auswählen", "Cancel" : "Abbrechen", - "Continue" : "Fortsetzen", "Close" : "Schließen", + "Continue" : "Fortsetzen", "Error creating the share: {errorMessage}" : "Fehler beim Erstellen der Freigabe: {errorMessage}", "Error creating the share" : "Fehler beim Erstellen der Freigabe", "Sharing" : "Teilen", @@ -188,6 +188,7 @@ "Deck board" : "Deck-Board", "ScienceMesh" : "ScienceMesh", "on {server}" : "auf {server}", + "Enter your name" : "Gib deinen Namen ein", "Allow upload and editing" : "Hochladen und Bearbeiten erlauben", "Allow editing" : "Bearbeitung erlauben", "Upload only" : "Nur hochladen", diff --git a/apps/files_sharing/l10n/de_DE.js b/apps/files_sharing/l10n/de_DE.js index 01a95d9e7cb..52aa8fd2950 100644 --- a/apps/files_sharing/l10n/de_DE.js +++ b/apps/files_sharing/l10n/de_DE.js @@ -126,21 +126,21 @@ OC.L10N.register( "Accept" : "Akzeptieren", "Decline" : "Ablehnen", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Diese App ermöglicht es Personen, Dateien innerhalb von Nextcloud zu teilen. Wenn aktiviert, kann die Administration wählen, welche Gruppen Dateien teilen können. Die entsprechenden Personen können dann Dateien und Ordner mit anderen Personen und Gruppen innerhalb von Nextcloud teilen. Wenn der Administrator die Funktion zum Teilen von Links aktiviert, kann ein externer Link verwendet werden, um Dateien mit anderen Personen außerhalb von Nextcloud zu teilen. Administratoren können auch Passwörter und Ablaufdaten erzwingen und die Freigabe von Server zu Server über Freigabelinks sowie die Freigabe von mobilen Geräten aus aktivieren.\nWenn Sie die Funktion deaktivieren, werden freigegebene Dateien und Ordner auf dem Server für alle Freigabeempfänger und auch auf den Sync-Clients und mobilen Apps entfernt. Weitere Informationen finden Sie in der Nextcloud-Dokumentation.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Ihre Administration hat ein Standardablaufdatum mit einer maximalen Anzahl von {days} Tagen erzwungen.", "When should the request expire?" : "Wann soll die Anfrage ablaufen?", - "Set a submission expirationDate" : "Ablaufdatum für die Übermittlung festlegen", + "Set a submission expiration date" : "Ablaufdatum für die Übermittlung festlegen", "Expiration date" : "Ablaufdatum", "Select a date" : "Datum auswählen", - "Your administrator has enforced a password protection." : "Ihre Administration erzwingt einen Passwortschutz", + "Your administrator has enforced a {count} days expiration policy." : "Ihre Administration hat erzeingt über eine Richtlinie den Ablauf nach {count} Tagen.", "What password should be used for the request?" : "Welches Passwort soll für die Anfrage verwendet werden?", "Set a password" : "Passwort setzen", "Password" : "Passwort", "Enter a valid password" : "Ein gültige Passwort eingeben", "Generate a new password" : "Ein neues Passwort erstellen", + "Your administrator has enforced a password protection." : "Ihre Administration erzwingt einen Passwortschutz", "The request will expire on {date} at midnight and will be password protected." : "Die Anfrage läuft am {date} um Mitternacht ab und ist passwortgeschützt.", "The request will expire on {date} at midnight." : "Die Anfrage läuft am {date} um Mitternacht ab.", "The request will be password protected." : "Die Anfrage wird passwortgeschützt sein.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Nach der Erstellung können Sie den unten stehenden Link freigeben, damit Dateien von Anderen in Ihr Verzeichnis hochgeladen werden können.", + "You can now share the link below to allow people to upload files to your directory." : "Sie können jetzt den unten stehenden Link freigeben, damit andere Dateien in Ihr Verzeichnis hochladen können.", "Share link" : "Link teilen", "Copy to clipboard" : "In die Zwischenablage kopieren", "Send link via email" : "Link per E-Mail verschicken", @@ -156,31 +156,33 @@ OC.L10N.register( "Request subject" : "Betreff der Anfrage", "Birthday party photos, History assignment…" : "Fotos von Geburtstagsfeiern, Geschichtsaufgaben…", "Where should these files go?" : "Wo sollen diese Dateien gespeichert werden?", - "The uploaded files are visible only to you unless you choose to share them." : "Die hochgeladenen Dateien sind nur für Sie sichtbar, so lange Sie sie nicht freizugeben.", "Upload destination" : "Ziel für das Hochladen", "Select a destination" : "Ein Ziel wählen", "Revert to default" : "Auf Standard zurücksetzen", + "The uploaded files are visible only to you unless you choose to share them." : "Die hochgeladenen Dateien sind nur für Sie sichtbar, so lange Sie sie nicht freizugeben.", "Add a note" : "Notiz hinzufügen", "Note for recipient" : "Notiz für den Empfänger", "Add a note to help people understand what you are requesting." : "Fügen Sie eine Notiz hinzu, damit die Adressaten verstehen, was Sie anfragen.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Sie können Links, Daten oder andere Informationen hinzufügen, die dem Empfänger helfen, Ihre Anfrage zu verstehen.", "Select" : "Auswählen", "Create a file request" : "Eine Dateianfrage erstellen", "File request created" : "Dateianfrage erstellt", "Collect files from others even if they do not have an account." : "Dateien von anderen sammeln, auch wenn diese kein Konto haben.", "To ensure you can receive files, verify you have enough storage available." : "Um sicherzustellen, dass Sie Dateien empfangen können, überprüfen Sie, ob Ihnen genügend Speicherplatz zur Verfügung steht.", "File request" : "Dateianfrage", + "Previous step" : "Vorheriger Schritt", "Cancel" : "Abbrechen", "Cancel the file request creation" : "Erstellung der Dateianfrage abbrechen", - "Previous step" : "Vorheriger Schritt", - "Continue" : "Fortsetzen", + "Close without sending emails" : "Schließen ohne E-Mails zu versenden", "Close" : "Schließen", + "Continue" : "Fortsetzen", "Please select a folder, you cannot share the root directory." : "Bitte wählen Sie einen Ordner aus. Das Rootverzeichnis kann nicht freigegeben werden.", - "File request created and emails sent" : "Dateianfrage erstellt und E-Mail versandt", "Error creating the share: {errorMessage}" : "Fehler beim Erstellen der Freigabe: {errorMessage}", "Error creating the share" : "Fehler beim Erstellen der Freigabe", "Error sending emails: {errorMessage}" : "Fehler beim E-Mailversand: {errorMessage}", "Error sending emails" : "Fehler beim E-Mailversand", - "_Close and send email_::_Close and send {count} emails_" : ["Schließen und E-Mail versenden","Schließen und {count} E-Mails versenden"], + "_Send email and close_::_Send {count} emails and close_" : ["E-Mail senden und schließen","{count} E-Mails senden und schließen"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["Dateianforderung erstellt und E-Mail gesendet","Dateianforderung erstellt und {count} E-Mails gesendet"], "Sharing" : "Teilen", "Accept shares from other accounts and groups by default" : "Freigaben von anderen Konten und Gruppen standardmäßig annehmen", "Error while toggling options" : "Fehler beim Umschalten der Optionen", @@ -251,6 +253,11 @@ OC.L10N.register( "Deck board" : "Deck-Board", "ScienceMesh" : "ScienceMesh", "on {server}" : "auf {server}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} hat einen Ordner mit Ihnen geteilt.", + "To upload files, you need to provide your name first." : "Um Dateien hochzuladen, müssen Sie zunächst Ihren Namen angeben.", + "Enter your name" : "Geben Sie Ihren Namen ein", + "Submit name" : "Name übermitteln", + "Upload files to {folder}" : "Dateien hochladen nach {folder}", "Allow upload and editing" : "Hochladen und Bearbeiten erlauben", "Allow editing" : "Bearbeitung erlauben", "Upload only" : "Nur hochladen", @@ -303,7 +310,7 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "Freigabe für die Datei \"{path}\" wurde entfernt", "Folder \"{path}\" has been unshared" : "Freigabe für den Ordner \"{path}\" wurde entfernt", "Share {propertyName} saved" : "Freigabe {propertyName} gespeichert", - "Create new file request" : "Neue Dateianfrage erstellen", + "Create file request" : "Dateianfrage erstellen", "Shared by" : "Geteilt von", "Shared with" : "Geteilt mit", "Password created successfully" : "Passwort erstellt", @@ -338,6 +345,7 @@ OC.L10N.register( "Shares you have received but not approved will show up here" : "Freigaben die Sie erhalten, aber nicht bestätigt haben, werden hier angezeigt werden", "Share note" : "Notiz teilen", "Upload files to %s" : "Dateien für %s hochladen", + "%s shared a folder with you." : "%s hat einen Ordner mit Ihnen geteilt.", "Note" : "Notiz", "Select or drop files" : "Dateien auswählen oder hierher ziehen", "Uploading files" : "Dateien werden hochgeladen", diff --git a/apps/files_sharing/l10n/de_DE.json b/apps/files_sharing/l10n/de_DE.json index 159286558ac..50f28e6872d 100644 --- a/apps/files_sharing/l10n/de_DE.json +++ b/apps/files_sharing/l10n/de_DE.json @@ -124,21 +124,21 @@ "Accept" : "Akzeptieren", "Decline" : "Ablehnen", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Diese App ermöglicht es Personen, Dateien innerhalb von Nextcloud zu teilen. Wenn aktiviert, kann die Administration wählen, welche Gruppen Dateien teilen können. Die entsprechenden Personen können dann Dateien und Ordner mit anderen Personen und Gruppen innerhalb von Nextcloud teilen. Wenn der Administrator die Funktion zum Teilen von Links aktiviert, kann ein externer Link verwendet werden, um Dateien mit anderen Personen außerhalb von Nextcloud zu teilen. Administratoren können auch Passwörter und Ablaufdaten erzwingen und die Freigabe von Server zu Server über Freigabelinks sowie die Freigabe von mobilen Geräten aus aktivieren.\nWenn Sie die Funktion deaktivieren, werden freigegebene Dateien und Ordner auf dem Server für alle Freigabeempfänger und auch auf den Sync-Clients und mobilen Apps entfernt. Weitere Informationen finden Sie in der Nextcloud-Dokumentation.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Ihre Administration hat ein Standardablaufdatum mit einer maximalen Anzahl von {days} Tagen erzwungen.", "When should the request expire?" : "Wann soll die Anfrage ablaufen?", - "Set a submission expirationDate" : "Ablaufdatum für die Übermittlung festlegen", + "Set a submission expiration date" : "Ablaufdatum für die Übermittlung festlegen", "Expiration date" : "Ablaufdatum", "Select a date" : "Datum auswählen", - "Your administrator has enforced a password protection." : "Ihre Administration erzwingt einen Passwortschutz", + "Your administrator has enforced a {count} days expiration policy." : "Ihre Administration hat erzeingt über eine Richtlinie den Ablauf nach {count} Tagen.", "What password should be used for the request?" : "Welches Passwort soll für die Anfrage verwendet werden?", "Set a password" : "Passwort setzen", "Password" : "Passwort", "Enter a valid password" : "Ein gültige Passwort eingeben", "Generate a new password" : "Ein neues Passwort erstellen", + "Your administrator has enforced a password protection." : "Ihre Administration erzwingt einen Passwortschutz", "The request will expire on {date} at midnight and will be password protected." : "Die Anfrage läuft am {date} um Mitternacht ab und ist passwortgeschützt.", "The request will expire on {date} at midnight." : "Die Anfrage läuft am {date} um Mitternacht ab.", "The request will be password protected." : "Die Anfrage wird passwortgeschützt sein.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Nach der Erstellung können Sie den unten stehenden Link freigeben, damit Dateien von Anderen in Ihr Verzeichnis hochgeladen werden können.", + "You can now share the link below to allow people to upload files to your directory." : "Sie können jetzt den unten stehenden Link freigeben, damit andere Dateien in Ihr Verzeichnis hochladen können.", "Share link" : "Link teilen", "Copy to clipboard" : "In die Zwischenablage kopieren", "Send link via email" : "Link per E-Mail verschicken", @@ -154,31 +154,33 @@ "Request subject" : "Betreff der Anfrage", "Birthday party photos, History assignment…" : "Fotos von Geburtstagsfeiern, Geschichtsaufgaben…", "Where should these files go?" : "Wo sollen diese Dateien gespeichert werden?", - "The uploaded files are visible only to you unless you choose to share them." : "Die hochgeladenen Dateien sind nur für Sie sichtbar, so lange Sie sie nicht freizugeben.", "Upload destination" : "Ziel für das Hochladen", "Select a destination" : "Ein Ziel wählen", "Revert to default" : "Auf Standard zurücksetzen", + "The uploaded files are visible only to you unless you choose to share them." : "Die hochgeladenen Dateien sind nur für Sie sichtbar, so lange Sie sie nicht freizugeben.", "Add a note" : "Notiz hinzufügen", "Note for recipient" : "Notiz für den Empfänger", "Add a note to help people understand what you are requesting." : "Fügen Sie eine Notiz hinzu, damit die Adressaten verstehen, was Sie anfragen.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Sie können Links, Daten oder andere Informationen hinzufügen, die dem Empfänger helfen, Ihre Anfrage zu verstehen.", "Select" : "Auswählen", "Create a file request" : "Eine Dateianfrage erstellen", "File request created" : "Dateianfrage erstellt", "Collect files from others even if they do not have an account." : "Dateien von anderen sammeln, auch wenn diese kein Konto haben.", "To ensure you can receive files, verify you have enough storage available." : "Um sicherzustellen, dass Sie Dateien empfangen können, überprüfen Sie, ob Ihnen genügend Speicherplatz zur Verfügung steht.", "File request" : "Dateianfrage", + "Previous step" : "Vorheriger Schritt", "Cancel" : "Abbrechen", "Cancel the file request creation" : "Erstellung der Dateianfrage abbrechen", - "Previous step" : "Vorheriger Schritt", - "Continue" : "Fortsetzen", + "Close without sending emails" : "Schließen ohne E-Mails zu versenden", "Close" : "Schließen", + "Continue" : "Fortsetzen", "Please select a folder, you cannot share the root directory." : "Bitte wählen Sie einen Ordner aus. Das Rootverzeichnis kann nicht freigegeben werden.", - "File request created and emails sent" : "Dateianfrage erstellt und E-Mail versandt", "Error creating the share: {errorMessage}" : "Fehler beim Erstellen der Freigabe: {errorMessage}", "Error creating the share" : "Fehler beim Erstellen der Freigabe", "Error sending emails: {errorMessage}" : "Fehler beim E-Mailversand: {errorMessage}", "Error sending emails" : "Fehler beim E-Mailversand", - "_Close and send email_::_Close and send {count} emails_" : ["Schließen und E-Mail versenden","Schließen und {count} E-Mails versenden"], + "_Send email and close_::_Send {count} emails and close_" : ["E-Mail senden und schließen","{count} E-Mails senden und schließen"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["Dateianforderung erstellt und E-Mail gesendet","Dateianforderung erstellt und {count} E-Mails gesendet"], "Sharing" : "Teilen", "Accept shares from other accounts and groups by default" : "Freigaben von anderen Konten und Gruppen standardmäßig annehmen", "Error while toggling options" : "Fehler beim Umschalten der Optionen", @@ -249,6 +251,11 @@ "Deck board" : "Deck-Board", "ScienceMesh" : "ScienceMesh", "on {server}" : "auf {server}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} hat einen Ordner mit Ihnen geteilt.", + "To upload files, you need to provide your name first." : "Um Dateien hochzuladen, müssen Sie zunächst Ihren Namen angeben.", + "Enter your name" : "Geben Sie Ihren Namen ein", + "Submit name" : "Name übermitteln", + "Upload files to {folder}" : "Dateien hochladen nach {folder}", "Allow upload and editing" : "Hochladen und Bearbeiten erlauben", "Allow editing" : "Bearbeitung erlauben", "Upload only" : "Nur hochladen", @@ -301,7 +308,7 @@ "File \"{path}\" has been unshared" : "Freigabe für die Datei \"{path}\" wurde entfernt", "Folder \"{path}\" has been unshared" : "Freigabe für den Ordner \"{path}\" wurde entfernt", "Share {propertyName} saved" : "Freigabe {propertyName} gespeichert", - "Create new file request" : "Neue Dateianfrage erstellen", + "Create file request" : "Dateianfrage erstellen", "Shared by" : "Geteilt von", "Shared with" : "Geteilt mit", "Password created successfully" : "Passwort erstellt", @@ -336,6 +343,7 @@ "Shares you have received but not approved will show up here" : "Freigaben die Sie erhalten, aber nicht bestätigt haben, werden hier angezeigt werden", "Share note" : "Notiz teilen", "Upload files to %s" : "Dateien für %s hochladen", + "%s shared a folder with you." : "%s hat einen Ordner mit Ihnen geteilt.", "Note" : "Notiz", "Select or drop files" : "Dateien auswählen oder hierher ziehen", "Uploading files" : "Dateien werden hochgeladen", diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js index 029ce38db4d..0ec43543f04 100644 --- a/apps/files_sharing/l10n/el.js +++ b/apps/files_sharing/l10n/el.js @@ -119,8 +119,8 @@ OC.L10N.register( "Link copied to clipboard" : "Ο σύνδεσμος αντιγράφηκε στο πρόχειρο", "Select" : "Επιλογή", "Cancel" : "Ακύρωση", - "Continue" : "Συνεχίστε", "Close" : "Κλείσιμο", + "Continue" : "Συνεχίστε", "Error creating the share: {errorMessage}" : "Σφάλμα κατά τη δημιουργία της κοινής χρήσης: {errorMessage}", "Error creating the share" : "Σφάλμα κατά την δημιουργία κοινόχρηστου", "Sharing" : "Διαμοιρασμός", @@ -185,6 +185,7 @@ OC.L10N.register( "Talk conversation" : "Συνομιλία στο Talk", "Deck board" : "Πίνακας του Deck", "on {server}" : "στον {server}", + "Enter your name" : "Προσθέστε το όνομά σας", "Allow upload and editing" : "Επέτρεψε την μεταφόρτωση και επεξεργασία", "Allow editing" : "Επιτρέπεται η επεξεργασία", "Advanced settings" : "Ρυθμίσεις για προχωρημένους", diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json index 7cd4a6c7c44..89e90ac0425 100644 --- a/apps/files_sharing/l10n/el.json +++ b/apps/files_sharing/l10n/el.json @@ -117,8 +117,8 @@ "Link copied to clipboard" : "Ο σύνδεσμος αντιγράφηκε στο πρόχειρο", "Select" : "Επιλογή", "Cancel" : "Ακύρωση", - "Continue" : "Συνεχίστε", "Close" : "Κλείσιμο", + "Continue" : "Συνεχίστε", "Error creating the share: {errorMessage}" : "Σφάλμα κατά τη δημιουργία της κοινής χρήσης: {errorMessage}", "Error creating the share" : "Σφάλμα κατά την δημιουργία κοινόχρηστου", "Sharing" : "Διαμοιρασμός", @@ -183,6 +183,7 @@ "Talk conversation" : "Συνομιλία στο Talk", "Deck board" : "Πίνακας του Deck", "on {server}" : "στον {server}", + "Enter your name" : "Προσθέστε το όνομά σας", "Allow upload and editing" : "Επέτρεψε την μεταφόρτωση και επεξεργασία", "Allow editing" : "Επιτρέπεται η επεξεργασία", "Advanced settings" : "Ρυθμίσεις για προχωρημένους", diff --git a/apps/files_sharing/l10n/en_GB.js b/apps/files_sharing/l10n/en_GB.js index 84c05ebb927..3080d3acf74 100644 --- a/apps/files_sharing/l10n/en_GB.js +++ b/apps/files_sharing/l10n/en_GB.js @@ -126,21 +126,21 @@ OC.L10N.register( "Accept" : "Accept", "Decline" : "Decline", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Your administrator has enforced a default expiration date with a maximum {days} days.", "When should the request expire?" : "When should the request expire?", - "Set a submission expirationDate" : "Set a submission expirationDate", + "Set a submission expiration date" : "Set a submission expiration date", "Expiration date" : "Expiration date", "Select a date" : "Select a date", - "Your administrator has enforced a password protection." : "Your administrator has enforced a password protection.", + "Your administrator has enforced a {count} days expiration policy." : "Your administrator has enforced a {count} days expiration policy.", "What password should be used for the request?" : "What password should be used for the request?", "Set a password" : "Set a password", "Password" : "Password", "Enter a valid password" : "Enter a valid password", "Generate a new password" : "Generate a new password", + "Your administrator has enforced a password protection." : "Your administrator has enforced a password protection.", "The request will expire on {date} at midnight and will be password protected." : "The request will expire on {date} at midnight and will be password protected.", "The request will expire on {date} at midnight." : "The request will expire on {date} at midnight.", "The request will be password protected." : "The request will be password protected.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Once created, you can share the link below to allow people to upload files to your directory.", + "You can now share the link below to allow people to upload files to your directory." : "You can now share the link below to allow people to upload files to your directory.", "Share link" : "Share link", "Copy to clipboard" : "Copy to clipboard", "Send link via email" : "Send link via email", @@ -156,31 +156,33 @@ OC.L10N.register( "Request subject" : "Request subject", "Birthday party photos, History assignment…" : "Birthday party photos, History assignment…", "Where should these files go?" : "Where should these files go?", - "The uploaded files are visible only to you unless you choose to share them." : "The uploaded files are visible only to you unless you choose to share them.", "Upload destination" : "Upload destination", "Select a destination" : "Select a destination", "Revert to default" : "Revert to default", + "The uploaded files are visible only to you unless you choose to share them." : "The uploaded files are visible only to you unless you choose to share them.", "Add a note" : "Add a note", "Note for recipient" : "Note for recipient", "Add a note to help people understand what you are requesting." : "Add a note to help people understand what you are requesting.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "You can add links, date or any other information that will help the recipient understand what you are requesting.", "Select" : "Select", "Create a file request" : "Create a file request", "File request created" : "File request created", "Collect files from others even if they do not have an account." : "Collect files from others even if they do not have an account.", "To ensure you can receive files, verify you have enough storage available." : "To ensure you can receive files, verify you have enough storage available.", "File request" : "File request", + "Previous step" : "Previous step", "Cancel" : "Cancel", "Cancel the file request creation" : "Cancel the file request creation", - "Previous step" : "Previous step", - "Continue" : "Continue", + "Close without sending emails" : "Close without sending emails", "Close" : "Close", + "Continue" : "Continue", "Please select a folder, you cannot share the root directory." : "Please select a folder, you cannot share the root directory.", - "File request created and emails sent" : "File request created and emails sent", "Error creating the share: {errorMessage}" : "Error creating the share: {errorMessage}", "Error creating the share" : "Error creating the share", "Error sending emails: {errorMessage}" : "Error sending emails: {errorMessage}", "Error sending emails" : "Error sending emails", - "_Close and send email_::_Close and send {count} emails_" : ["Close and send email","Close and send {count} emails"], + "_Send email and close_::_Send {count} emails and close_" : ["Send email and close","Send {count} emails and close"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["File request created and email sent","File request created and {count} emails sent"], "Sharing" : "Sharing", "Accept shares from other accounts and groups by default" : "Accept shares from other accounts and groups by default", "Error while toggling options" : "Error while toggling options", @@ -251,6 +253,11 @@ OC.L10N.register( "Deck board" : "Deck board", "ScienceMesh" : "ScienceMesh", "on {server}" : "on {server}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} shared a folder with you.", + "To upload files, you need to provide your name first." : "To upload files, you need to provide your name first.", + "Enter your name" : "Enter your name", + "Submit name" : "Submit name", + "Upload files to {folder}" : "Upload files to {folder}", "Allow upload and editing" : "Allow upload and editing", "Allow editing" : "Allow editing", "Upload only" : "Upload only", @@ -303,7 +310,7 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "File \"{path}\" has been unshared", "Folder \"{path}\" has been unshared" : "Folder \"{path}\" has been unshared", "Share {propertyName} saved" : "Share {propertyName} saved", - "Create new file request" : "Create new file request", + "Create file request" : "Create file request", "Shared by" : "Shared by", "Shared with" : "Shared with", "Password created successfully" : "Password created successfully", @@ -338,6 +345,7 @@ OC.L10N.register( "Shares you have received but not approved will show up here" : "Shares you have received but not approved will show up here", "Share note" : "Share note", "Upload files to %s" : "Upload files to %s", + "%s shared a folder with you." : "%s shared a folder with you.", "Note" : "Note", "Select or drop files" : "Select or drop files", "Uploading files" : "Uploading files", diff --git a/apps/files_sharing/l10n/en_GB.json b/apps/files_sharing/l10n/en_GB.json index 3ad39cab645..4ed2541765e 100644 --- a/apps/files_sharing/l10n/en_GB.json +++ b/apps/files_sharing/l10n/en_GB.json @@ -124,21 +124,21 @@ "Accept" : "Accept", "Decline" : "Decline", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Your administrator has enforced a default expiration date with a maximum {days} days.", "When should the request expire?" : "When should the request expire?", - "Set a submission expirationDate" : "Set a submission expirationDate", + "Set a submission expiration date" : "Set a submission expiration date", "Expiration date" : "Expiration date", "Select a date" : "Select a date", - "Your administrator has enforced a password protection." : "Your administrator has enforced a password protection.", + "Your administrator has enforced a {count} days expiration policy." : "Your administrator has enforced a {count} days expiration policy.", "What password should be used for the request?" : "What password should be used for the request?", "Set a password" : "Set a password", "Password" : "Password", "Enter a valid password" : "Enter a valid password", "Generate a new password" : "Generate a new password", + "Your administrator has enforced a password protection." : "Your administrator has enforced a password protection.", "The request will expire on {date} at midnight and will be password protected." : "The request will expire on {date} at midnight and will be password protected.", "The request will expire on {date} at midnight." : "The request will expire on {date} at midnight.", "The request will be password protected." : "The request will be password protected.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Once created, you can share the link below to allow people to upload files to your directory.", + "You can now share the link below to allow people to upload files to your directory." : "You can now share the link below to allow people to upload files to your directory.", "Share link" : "Share link", "Copy to clipboard" : "Copy to clipboard", "Send link via email" : "Send link via email", @@ -154,31 +154,33 @@ "Request subject" : "Request subject", "Birthday party photos, History assignment…" : "Birthday party photos, History assignment…", "Where should these files go?" : "Where should these files go?", - "The uploaded files are visible only to you unless you choose to share them." : "The uploaded files are visible only to you unless you choose to share them.", "Upload destination" : "Upload destination", "Select a destination" : "Select a destination", "Revert to default" : "Revert to default", + "The uploaded files are visible only to you unless you choose to share them." : "The uploaded files are visible only to you unless you choose to share them.", "Add a note" : "Add a note", "Note for recipient" : "Note for recipient", "Add a note to help people understand what you are requesting." : "Add a note to help people understand what you are requesting.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "You can add links, date or any other information that will help the recipient understand what you are requesting.", "Select" : "Select", "Create a file request" : "Create a file request", "File request created" : "File request created", "Collect files from others even if they do not have an account." : "Collect files from others even if they do not have an account.", "To ensure you can receive files, verify you have enough storage available." : "To ensure you can receive files, verify you have enough storage available.", "File request" : "File request", + "Previous step" : "Previous step", "Cancel" : "Cancel", "Cancel the file request creation" : "Cancel the file request creation", - "Previous step" : "Previous step", - "Continue" : "Continue", + "Close without sending emails" : "Close without sending emails", "Close" : "Close", + "Continue" : "Continue", "Please select a folder, you cannot share the root directory." : "Please select a folder, you cannot share the root directory.", - "File request created and emails sent" : "File request created and emails sent", "Error creating the share: {errorMessage}" : "Error creating the share: {errorMessage}", "Error creating the share" : "Error creating the share", "Error sending emails: {errorMessage}" : "Error sending emails: {errorMessage}", "Error sending emails" : "Error sending emails", - "_Close and send email_::_Close and send {count} emails_" : ["Close and send email","Close and send {count} emails"], + "_Send email and close_::_Send {count} emails and close_" : ["Send email and close","Send {count} emails and close"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["File request created and email sent","File request created and {count} emails sent"], "Sharing" : "Sharing", "Accept shares from other accounts and groups by default" : "Accept shares from other accounts and groups by default", "Error while toggling options" : "Error while toggling options", @@ -249,6 +251,11 @@ "Deck board" : "Deck board", "ScienceMesh" : "ScienceMesh", "on {server}" : "on {server}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} shared a folder with you.", + "To upload files, you need to provide your name first." : "To upload files, you need to provide your name first.", + "Enter your name" : "Enter your name", + "Submit name" : "Submit name", + "Upload files to {folder}" : "Upload files to {folder}", "Allow upload and editing" : "Allow upload and editing", "Allow editing" : "Allow editing", "Upload only" : "Upload only", @@ -301,7 +308,7 @@ "File \"{path}\" has been unshared" : "File \"{path}\" has been unshared", "Folder \"{path}\" has been unshared" : "Folder \"{path}\" has been unshared", "Share {propertyName} saved" : "Share {propertyName} saved", - "Create new file request" : "Create new file request", + "Create file request" : "Create file request", "Shared by" : "Shared by", "Shared with" : "Shared with", "Password created successfully" : "Password created successfully", @@ -336,6 +343,7 @@ "Shares you have received but not approved will show up here" : "Shares you have received but not approved will show up here", "Share note" : "Share note", "Upload files to %s" : "Upload files to %s", + "%s shared a folder with you." : "%s shared a folder with you.", "Note" : "Note", "Select or drop files" : "Select or drop files", "Uploading files" : "Uploading files", diff --git a/apps/files_sharing/l10n/eo.js b/apps/files_sharing/l10n/eo.js index 4adaa299b7e..f1f9fadc7ff 100644 --- a/apps/files_sharing/l10n/eo.js +++ b/apps/files_sharing/l10n/eo.js @@ -106,8 +106,8 @@ OC.L10N.register( "Link copied to clipboard" : "Ligilo kopiita al tondujo", "Select" : "Elekti", "Cancel" : "Nuligi", - "Continue" : "Daŭrigi", "Close" : "Malfermi", + "Continue" : "Daŭrigi", "Error creating the share" : "Eraro dum kreo de la kunhavigo", "Sharing" : "Kunhavigo", "Reset" : "Restarigi", diff --git a/apps/files_sharing/l10n/eo.json b/apps/files_sharing/l10n/eo.json index a08e58c1087..33a5d8744ff 100644 --- a/apps/files_sharing/l10n/eo.json +++ b/apps/files_sharing/l10n/eo.json @@ -104,8 +104,8 @@ "Link copied to clipboard" : "Ligilo kopiita al tondujo", "Select" : "Elekti", "Cancel" : "Nuligi", - "Continue" : "Daŭrigi", "Close" : "Malfermi", + "Continue" : "Daŭrigi", "Error creating the share" : "Eraro dum kreo de la kunhavigo", "Sharing" : "Kunhavigo", "Reset" : "Restarigi", diff --git a/apps/files_sharing/l10n/es.js b/apps/files_sharing/l10n/es.js index f98d65b133b..0623ececef9 100644 --- a/apps/files_sharing/l10n/es.js +++ b/apps/files_sharing/l10n/es.js @@ -125,8 +125,8 @@ OC.L10N.register( "Link copied to clipboard" : "Enlace copiado al portapapeles", "Select" : "Seleccionar", "Cancel" : "Cancelar", - "Continue" : "Continuar", "Close" : "Cerrar", + "Continue" : "Continuar", "Error creating the share: {errorMessage}" : "Error al crear el recurso compartido: {errorMessage}", "Error creating the share" : "Error quitando el recurso compartido", "Sharing" : "Compartir", @@ -197,6 +197,8 @@ OC.L10N.register( "Deck board" : "Tablero Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "en {server}", + "Enter your name" : "Escriba su nombre", + "Submit name" : "Enviar nombre", "Allow upload and editing" : "Permitir la subida y la edición", "Allow editing" : "Permitir edición", "Upload only" : "Sólo subir", diff --git a/apps/files_sharing/l10n/es.json b/apps/files_sharing/l10n/es.json index fbb2b5af61b..34200ca8c9f 100644 --- a/apps/files_sharing/l10n/es.json +++ b/apps/files_sharing/l10n/es.json @@ -123,8 +123,8 @@ "Link copied to clipboard" : "Enlace copiado al portapapeles", "Select" : "Seleccionar", "Cancel" : "Cancelar", - "Continue" : "Continuar", "Close" : "Cerrar", + "Continue" : "Continuar", "Error creating the share: {errorMessage}" : "Error al crear el recurso compartido: {errorMessage}", "Error creating the share" : "Error quitando el recurso compartido", "Sharing" : "Compartir", @@ -195,6 +195,8 @@ "Deck board" : "Tablero Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "en {server}", + "Enter your name" : "Escriba su nombre", + "Submit name" : "Enviar nombre", "Allow upload and editing" : "Permitir la subida y la edición", "Allow editing" : "Permitir edición", "Upload only" : "Sólo subir", diff --git a/apps/files_sharing/l10n/es_EC.js b/apps/files_sharing/l10n/es_EC.js index 15ab144e7e4..3f3c2fb7c94 100644 --- a/apps/files_sharing/l10n/es_EC.js +++ b/apps/files_sharing/l10n/es_EC.js @@ -119,8 +119,8 @@ OC.L10N.register( "Copy to clipboard" : "Copiar al portapapeles", "Link copied to clipboard" : "Enlace copiado al portapapeles", "Cancel" : "Cancelar", - "Continue" : "Continuar", "Close" : "Cerrar", + "Continue" : "Continuar", "Error creating the share: {errorMessage}" : "Error al crear la compartición: {errorMessage}", "Error creating the share" : "Error al crear la compartición", "Sharing" : "Compartiendo", diff --git a/apps/files_sharing/l10n/es_EC.json b/apps/files_sharing/l10n/es_EC.json index a6e0f825d09..cc0602ecf5e 100644 --- a/apps/files_sharing/l10n/es_EC.json +++ b/apps/files_sharing/l10n/es_EC.json @@ -117,8 +117,8 @@ "Copy to clipboard" : "Copiar al portapapeles", "Link copied to clipboard" : "Enlace copiado al portapapeles", "Cancel" : "Cancelar", - "Continue" : "Continuar", "Close" : "Cerrar", + "Continue" : "Continuar", "Error creating the share: {errorMessage}" : "Error al crear la compartición: {errorMessage}", "Error creating the share" : "Error al crear la compartición", "Sharing" : "Compartiendo", diff --git a/apps/files_sharing/l10n/es_MX.js b/apps/files_sharing/l10n/es_MX.js index b2c6cabcc10..dc97482dc77 100644 --- a/apps/files_sharing/l10n/es_MX.js +++ b/apps/files_sharing/l10n/es_MX.js @@ -124,8 +124,8 @@ OC.L10N.register( "Link copied to clipboard" : "Enlace copiado al portapapeles", "Select" : "Seleccionar", "Cancel" : "Cancelar", - "Continue" : "Continuar", "Close" : "Cerrar", + "Continue" : "Continuar", "Error creating the share: {errorMessage}" : "Error al crear el recurso compartido: {errorMessage}", "Error creating the share" : "Error al crear el recurso compartido", "Sharing" : "Compartiendo", diff --git a/apps/files_sharing/l10n/es_MX.json b/apps/files_sharing/l10n/es_MX.json index 8214ff1d083..97c4332d8e9 100644 --- a/apps/files_sharing/l10n/es_MX.json +++ b/apps/files_sharing/l10n/es_MX.json @@ -122,8 +122,8 @@ "Link copied to clipboard" : "Enlace copiado al portapapeles", "Select" : "Seleccionar", "Cancel" : "Cancelar", - "Continue" : "Continuar", "Close" : "Cerrar", + "Continue" : "Continuar", "Error creating the share: {errorMessage}" : "Error al crear el recurso compartido: {errorMessage}", "Error creating the share" : "Error al crear el recurso compartido", "Sharing" : "Compartiendo", diff --git a/apps/files_sharing/l10n/eu.js b/apps/files_sharing/l10n/eu.js index 64fdf01db32..38079547ff6 100644 --- a/apps/files_sharing/l10n/eu.js +++ b/apps/files_sharing/l10n/eu.js @@ -126,20 +126,18 @@ OC.L10N.register( "Accept" : "Onartu", "Decline" : "Uko egin", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Aplikazio honek Nextcloud-en fitxategiak partekatzeko aukera ematen du. Gaituta badago, administratzaileak aukeratu dezake zein taldek parteka ditzaketen fitxategiak. Ondoren, baimendutako pertsonek fitxategiak eta karpetak parteka ditzakete Nextcloud-eko beste kontu eta talde batzuekin. Gainera, administratzaileak partekatzeko estekaren funtzioa gaitzen badu, kanpoko esteka bat erabil daiteke fitxategiak Nextcloud-etik kanpoko beste pertsonekin partekatzeko. Administratzaileek ere ezar ditzakete pasahitzak eta iraungitze-datak, bai eta gaitu zerbitzaritik zerbitzarira fitxategiak esteken bidez partekatzea, baita gailu mugikorretatik partekatzea ere.\nFuntzioa desaktibatuz gero, zerbitzarian partekatutako fitxategiak eta karpetak kentzen dira partekatutako hartzaile guztientzat, baita sinkronizazio-bezeroetan eta mugikorreko aplikazioetan ere. Informazio gehiago eskuragarri dago Nextcloud Dokumentazioan.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Zure administratzaileak {days}eguneko muga maximoa jarri die iraungitze datei.", "When should the request expire?" : "Noiz iraungi beharko luke eskaerak?", "Expiration date" : "Iraungitze-data", "Select a date" : "Hautatu data bat", - "Your administrator has enforced a password protection." : "Zure administratzaileak pasahitzez babestu behar dela ezarri du.", "What password should be used for the request?" : "Zein pasahitz erabili behar litzateke eskaera honetarako?", "Set a password" : "Ezarri pasahitz bat", "Password" : "Pasahitza", "Enter a valid password" : "Sartu baliozko pasahitz bat", "Generate a new password" : "Sortu pasahitz berria", + "Your administrator has enforced a password protection." : "Zure administratzaileak pasahitzez babestu behar dela ezarri du.", "The request will expire on {date} at midnight and will be password protected." : "Eskaera {date} egunean iraungiko da gauerdian eta pasahitzez babestuta egongo da.", "The request will expire on {date} at midnight." : "Eskaera {date} egunean iraungiko da gauerdian.", "The request will be password protected." : "Eskaera pasahitzez babestuta egongo da.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Sortu ondoren, beheko esteka partekatu dezakezu jendeak zure direktoriora fitxategiak igotzeko aukera izan dezan.", "Share link" : "Partekatu esteka", "Copy to clipboard" : "Kopiatu arbelera", "Send link via email" : "Bidali esteka posta elektronikoz", @@ -155,10 +153,10 @@ OC.L10N.register( "Request subject" : "Eskaeraren gaia", "Birthday party photos, History assignment…" : "Urtebetetze festako argazkiak, Historiako apunteak...", "Where should these files go?" : "Nora joan behar lukete fitxategi hauek?", - "The uploaded files are visible only to you unless you choose to share them." : "Igotzen diren fitxategiak zeuk bakarrik ikus ditzakezu, partekatzea erabakitzen duzun artean.", "Upload destination" : "Igo helmuga", "Select a destination" : "Hautatu helmuga bat", "Revert to default" : "Itzuli aukera lehenetsira", + "The uploaded files are visible only to you unless you choose to share them." : "Igotzen diren fitxategiak zeuk bakarrik ikus ditzakezu, partekatzea erabakitzen duzun artean.", "Add a note" : "Gehitu oharra", "Note for recipient" : "Hartzailearentzako oharra", "Add a note to help people understand what you are requesting." : "Gehitu ohar bat jendeak uler dezan zer eskatzen ari zaren.", @@ -168,18 +166,16 @@ OC.L10N.register( "Collect files from others even if they do not have an account." : "Bildu beste pertsona batzuen fitxategiak, nahiz eta beraiek kontua ez izan.", "To ensure you can receive files, verify you have enough storage available." : "Fitxategiak jaso ditzakezula bermatzeko, ziurta ezazu badaukazula nahikoa biltegiratze leku.", "File request" : "Fitxategi eskaera", + "Previous step" : "Aurreko urratsa", "Cancel" : "Utzi", "Cancel the file request creation" : "Utzi bertan behera fitxategi eskaera sortzea", - "Previous step" : "Aurreko urratsa", - "Continue" : "Jarraitu", "Close" : "Itxi", + "Continue" : "Jarraitu", "Please select a folder, you cannot share the root directory." : "Aukeratu karpeta bat, ezin duzu erro karpeta partekatu.", - "File request created and emails sent" : "Fitxategi eskaera sortu da eta mezu elektronikoak bidali dira", "Error creating the share: {errorMessage}" : "Errorea partekatzea sortzean: {errorMessage}", "Error creating the share" : "Errorea partekatzea sortzean", "Error sending emails: {errorMessage}" : "Errorea mezu elektronikoak bidaltzean: {errorMessage}", "Error sending emails" : "Errorea mezu elektronikoak bidaltzean", - "_Close and send email_::_Close and send {count} emails_" : ["Itxi eta bidali mezu elektronikoa","Itxi eta bidali {count} mezu elektroniko"], "Sharing" : "Partekatzea", "Accept shares from other accounts and groups by default" : "Onartu beste kontu eta talde batzuetako partekatzeak modu lehenetsian", "Error while toggling options" : "Errorea aukerak aldatzean", @@ -250,6 +246,8 @@ OC.L10N.register( "Deck board" : "Deck mahaia", "ScienceMesh" : "ScienceMesh", "on {server}" : "{server} zerbitzarian", + "Enter your name" : "Sartu zure izena", + "Submit name" : "Sartu izena", "Allow upload and editing" : "Onartu igotzea eta editatzea", "Allow editing" : "Baimendu editatzea", "Upload only" : "Igoera soilik", @@ -302,7 +300,6 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "\"{path}\" fitxategiaren partekatzea eten da", "Folder \"{path}\" has been unshared" : "\"{path}\" karpetaren partekatzea eten da", "Share {propertyName} saved" : "Partekatu {propertyName} gordeta", - "Create new file request" : "Sortu fitxategi eskaera berria", "Shared by" : "Honek partekatua", "Shared with" : "Honekin partekatua", "Password created successfully" : "Pasahitza ongi sortu da", diff --git a/apps/files_sharing/l10n/eu.json b/apps/files_sharing/l10n/eu.json index 18264bec831..cad164eda12 100644 --- a/apps/files_sharing/l10n/eu.json +++ b/apps/files_sharing/l10n/eu.json @@ -124,20 +124,18 @@ "Accept" : "Onartu", "Decline" : "Uko egin", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Aplikazio honek Nextcloud-en fitxategiak partekatzeko aukera ematen du. Gaituta badago, administratzaileak aukeratu dezake zein taldek parteka ditzaketen fitxategiak. Ondoren, baimendutako pertsonek fitxategiak eta karpetak parteka ditzakete Nextcloud-eko beste kontu eta talde batzuekin. Gainera, administratzaileak partekatzeko estekaren funtzioa gaitzen badu, kanpoko esteka bat erabil daiteke fitxategiak Nextcloud-etik kanpoko beste pertsonekin partekatzeko. Administratzaileek ere ezar ditzakete pasahitzak eta iraungitze-datak, bai eta gaitu zerbitzaritik zerbitzarira fitxategiak esteken bidez partekatzea, baita gailu mugikorretatik partekatzea ere.\nFuntzioa desaktibatuz gero, zerbitzarian partekatutako fitxategiak eta karpetak kentzen dira partekatutako hartzaile guztientzat, baita sinkronizazio-bezeroetan eta mugikorreko aplikazioetan ere. Informazio gehiago eskuragarri dago Nextcloud Dokumentazioan.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Zure administratzaileak {days}eguneko muga maximoa jarri die iraungitze datei.", "When should the request expire?" : "Noiz iraungi beharko luke eskaerak?", "Expiration date" : "Iraungitze-data", "Select a date" : "Hautatu data bat", - "Your administrator has enforced a password protection." : "Zure administratzaileak pasahitzez babestu behar dela ezarri du.", "What password should be used for the request?" : "Zein pasahitz erabili behar litzateke eskaera honetarako?", "Set a password" : "Ezarri pasahitz bat", "Password" : "Pasahitza", "Enter a valid password" : "Sartu baliozko pasahitz bat", "Generate a new password" : "Sortu pasahitz berria", + "Your administrator has enforced a password protection." : "Zure administratzaileak pasahitzez babestu behar dela ezarri du.", "The request will expire on {date} at midnight and will be password protected." : "Eskaera {date} egunean iraungiko da gauerdian eta pasahitzez babestuta egongo da.", "The request will expire on {date} at midnight." : "Eskaera {date} egunean iraungiko da gauerdian.", "The request will be password protected." : "Eskaera pasahitzez babestuta egongo da.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Sortu ondoren, beheko esteka partekatu dezakezu jendeak zure direktoriora fitxategiak igotzeko aukera izan dezan.", "Share link" : "Partekatu esteka", "Copy to clipboard" : "Kopiatu arbelera", "Send link via email" : "Bidali esteka posta elektronikoz", @@ -153,10 +151,10 @@ "Request subject" : "Eskaeraren gaia", "Birthday party photos, History assignment…" : "Urtebetetze festako argazkiak, Historiako apunteak...", "Where should these files go?" : "Nora joan behar lukete fitxategi hauek?", - "The uploaded files are visible only to you unless you choose to share them." : "Igotzen diren fitxategiak zeuk bakarrik ikus ditzakezu, partekatzea erabakitzen duzun artean.", "Upload destination" : "Igo helmuga", "Select a destination" : "Hautatu helmuga bat", "Revert to default" : "Itzuli aukera lehenetsira", + "The uploaded files are visible only to you unless you choose to share them." : "Igotzen diren fitxategiak zeuk bakarrik ikus ditzakezu, partekatzea erabakitzen duzun artean.", "Add a note" : "Gehitu oharra", "Note for recipient" : "Hartzailearentzako oharra", "Add a note to help people understand what you are requesting." : "Gehitu ohar bat jendeak uler dezan zer eskatzen ari zaren.", @@ -166,18 +164,16 @@ "Collect files from others even if they do not have an account." : "Bildu beste pertsona batzuen fitxategiak, nahiz eta beraiek kontua ez izan.", "To ensure you can receive files, verify you have enough storage available." : "Fitxategiak jaso ditzakezula bermatzeko, ziurta ezazu badaukazula nahikoa biltegiratze leku.", "File request" : "Fitxategi eskaera", + "Previous step" : "Aurreko urratsa", "Cancel" : "Utzi", "Cancel the file request creation" : "Utzi bertan behera fitxategi eskaera sortzea", - "Previous step" : "Aurreko urratsa", - "Continue" : "Jarraitu", "Close" : "Itxi", + "Continue" : "Jarraitu", "Please select a folder, you cannot share the root directory." : "Aukeratu karpeta bat, ezin duzu erro karpeta partekatu.", - "File request created and emails sent" : "Fitxategi eskaera sortu da eta mezu elektronikoak bidali dira", "Error creating the share: {errorMessage}" : "Errorea partekatzea sortzean: {errorMessage}", "Error creating the share" : "Errorea partekatzea sortzean", "Error sending emails: {errorMessage}" : "Errorea mezu elektronikoak bidaltzean: {errorMessage}", "Error sending emails" : "Errorea mezu elektronikoak bidaltzean", - "_Close and send email_::_Close and send {count} emails_" : ["Itxi eta bidali mezu elektronikoa","Itxi eta bidali {count} mezu elektroniko"], "Sharing" : "Partekatzea", "Accept shares from other accounts and groups by default" : "Onartu beste kontu eta talde batzuetako partekatzeak modu lehenetsian", "Error while toggling options" : "Errorea aukerak aldatzean", @@ -248,6 +244,8 @@ "Deck board" : "Deck mahaia", "ScienceMesh" : "ScienceMesh", "on {server}" : "{server} zerbitzarian", + "Enter your name" : "Sartu zure izena", + "Submit name" : "Sartu izena", "Allow upload and editing" : "Onartu igotzea eta editatzea", "Allow editing" : "Baimendu editatzea", "Upload only" : "Igoera soilik", @@ -300,7 +298,6 @@ "File \"{path}\" has been unshared" : "\"{path}\" fitxategiaren partekatzea eten da", "Folder \"{path}\" has been unshared" : "\"{path}\" karpetaren partekatzea eten da", "Share {propertyName} saved" : "Partekatu {propertyName} gordeta", - "Create new file request" : "Sortu fitxategi eskaera berria", "Shared by" : "Honek partekatua", "Shared with" : "Honekin partekatua", "Password created successfully" : "Pasahitza ongi sortu da", diff --git a/apps/files_sharing/l10n/fa.js b/apps/files_sharing/l10n/fa.js index fee1936b76d..1c6d30528f7 100644 --- a/apps/files_sharing/l10n/fa.js +++ b/apps/files_sharing/l10n/fa.js @@ -121,8 +121,8 @@ OC.L10N.register( "Link copied to clipboard" : "پیوند در حافظه موقت کپی شده", "Select" : "گزینش<br>", "Cancel" : "لغو", - "Continue" : "ادامه", "Close" : "بسته", + "Continue" : "ادامه", "Error creating the share: {errorMessage}" : "Error creating the share: {errorMessage}", "Error creating the share" : "خطایی در ایجاد اشتراک", "Sharing" : "اشتراک گذاری", @@ -185,6 +185,7 @@ OC.L10N.register( "Deck board" : "تخته deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "روی{سرور}", + "Enter your name" : "اسمت را وارد کن", "Allow upload and editing" : "اجازه آپلود و ویرایش", "Allow editing" : "اجازهی ویرایش", "Advanced settings" : "تنظیمات پیشرفته", diff --git a/apps/files_sharing/l10n/fa.json b/apps/files_sharing/l10n/fa.json index 6792df14c1d..f674a6ae98e 100644 --- a/apps/files_sharing/l10n/fa.json +++ b/apps/files_sharing/l10n/fa.json @@ -119,8 +119,8 @@ "Link copied to clipboard" : "پیوند در حافظه موقت کپی شده", "Select" : "گزینش<br>", "Cancel" : "لغو", - "Continue" : "ادامه", "Close" : "بسته", + "Continue" : "ادامه", "Error creating the share: {errorMessage}" : "Error creating the share: {errorMessage}", "Error creating the share" : "خطایی در ایجاد اشتراک", "Sharing" : "اشتراک گذاری", @@ -183,6 +183,7 @@ "Deck board" : "تخته deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "روی{سرور}", + "Enter your name" : "اسمت را وارد کن", "Allow upload and editing" : "اجازه آپلود و ویرایش", "Allow editing" : "اجازهی ویرایش", "Advanced settings" : "تنظیمات پیشرفته", diff --git a/apps/files_sharing/l10n/fi.js b/apps/files_sharing/l10n/fi.js index 1188354a3d6..7189d5b8a82 100644 --- a/apps/files_sharing/l10n/fi.js +++ b/apps/files_sharing/l10n/fi.js @@ -118,8 +118,8 @@ OC.L10N.register( "Link copied to clipboard" : "Linkki kopioitu leikepöydälle", "Select" : "Valitse", "Cancel" : "Peruuta", - "Continue" : "Jatka", "Close" : "Sulje", + "Continue" : "Jatka", "Error creating the share: {errorMessage}" : "Virhe luotaessa jakoa: {errorMessage}", "Error creating the share" : "Virhe jakoa luotaessa", "Sharing" : "Jakaminen", @@ -184,6 +184,7 @@ OC.L10N.register( "Talk conversation" : "Talk-keskustelu", "Deck board" : "Deck-taulu", "on {server}" : "palvelimella {server}", + "Enter your name" : "Kirjoita nimesi", "Allow upload and editing" : "Salli lähetys ja muokkaus", "Allow editing" : "Salli muokkaus", "Advanced settings" : "Lisäasetukset", diff --git a/apps/files_sharing/l10n/fi.json b/apps/files_sharing/l10n/fi.json index 8f7cb74c4a5..d69494bc56f 100644 --- a/apps/files_sharing/l10n/fi.json +++ b/apps/files_sharing/l10n/fi.json @@ -116,8 +116,8 @@ "Link copied to clipboard" : "Linkki kopioitu leikepöydälle", "Select" : "Valitse", "Cancel" : "Peruuta", - "Continue" : "Jatka", "Close" : "Sulje", + "Continue" : "Jatka", "Error creating the share: {errorMessage}" : "Virhe luotaessa jakoa: {errorMessage}", "Error creating the share" : "Virhe jakoa luotaessa", "Sharing" : "Jakaminen", @@ -182,6 +182,7 @@ "Talk conversation" : "Talk-keskustelu", "Deck board" : "Deck-taulu", "on {server}" : "palvelimella {server}", + "Enter your name" : "Kirjoita nimesi", "Allow upload and editing" : "Salli lähetys ja muokkaus", "Allow editing" : "Salli muokkaus", "Advanced settings" : "Lisäasetukset", diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index a2be6690643..c6e18d5403d 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -125,8 +125,8 @@ OC.L10N.register( "Link copied to clipboard" : "Lien copié dans le presse-papier", "Select" : "Sélectionner", "Cancel" : "Annuler", - "Continue" : "Continuer", "Close" : "Fermer", + "Continue" : "Continuer", "Error creating the share: {errorMessage}" : "Erreur à la création du partage : {errorMessage} ", "Error creating the share" : "Erreur lors de la création du partage", "Sharing" : "Partage", @@ -197,6 +197,8 @@ OC.L10N.register( "Deck board" : "Tableau Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "sur {server}", + "Enter your name" : "Saisissez votre nom", + "Submit name" : "Confirmer votre nom", "Allow upload and editing" : "Autoriser le téléversement et la modification", "Allow editing" : "Autoriser la modification", "Upload only" : "Téléversement seulement", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index cb0330b7f9a..ede0c907df0 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -123,8 +123,8 @@ "Link copied to clipboard" : "Lien copié dans le presse-papier", "Select" : "Sélectionner", "Cancel" : "Annuler", - "Continue" : "Continuer", "Close" : "Fermer", + "Continue" : "Continuer", "Error creating the share: {errorMessage}" : "Erreur à la création du partage : {errorMessage} ", "Error creating the share" : "Erreur lors de la création du partage", "Sharing" : "Partage", @@ -195,6 +195,8 @@ "Deck board" : "Tableau Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "sur {server}", + "Enter your name" : "Saisissez votre nom", + "Submit name" : "Confirmer votre nom", "Allow upload and editing" : "Autoriser le téléversement et la modification", "Allow editing" : "Autoriser la modification", "Upload only" : "Téléversement seulement", diff --git a/apps/files_sharing/l10n/ga.js b/apps/files_sharing/l10n/ga.js index a41ccc6da69..3cbebbedf69 100644 --- a/apps/files_sharing/l10n/ga.js +++ b/apps/files_sharing/l10n/ga.js @@ -126,21 +126,21 @@ OC.L10N.register( "Accept" : "Glac", "Decline" : "Meath", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Cuireann an feidhmchlár seo ar chumas daoine comhaid a roinnt laistigh de Nextcloud. Má tá sé cumasaithe, is féidir leis an riarthóir a roghnú cé na grúpaí ar féidir leo comhaid a roinnt. Is féidir leis na daoine infheidhme comhaid agus fillteáin a roinnt ansin le cuntais agus grúpaí eile laistigh de Nextcloud. Ina theannta sin, má chumasaíonn an riarthóir an ghné nasc comhroinnte, is féidir nasc seachtrach a úsáid chun comhaid a roinnt le daoine eile lasmuigh de Nextcloud. Is féidir le riarthóirí pasfhocail, dátaí éaga a fhorfheidhmiú freisin, agus roinnt freastalaí a chumasú trí naisc scaireanna, chomh maith le comhroinnt ó ghléasanna soghluaiste.\nMá mhúchtar an ghné, baintear comhaid agus fillteáin roinnte ar an bhfreastalaí do gach faighteoir scaireanna, agus freisin ar na cliaint sioncronaithe agus aipeanna móibíleacha. Tá tuilleadh eolais ar fáil sa Doiciméadúchán Nextcloud.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Tá dáta éaga réamhshocraithe curtha i bhfeidhm ag do riarthóir a bhfuil uasmhéid {days} lá air.", "When should the request expire?" : "Cathain ar cheart don iarratas dul in éag?", - "Set a submission expirationDate" : "Socraigh dáta éaga aighneachta", + "Set a submission expiration date" : "Socraigh dáta éaga aighneachta", "Expiration date" : "Dáta éaga", "Select a date" : "Roghnaigh dáta", - "Your administrator has enforced a password protection." : "Chuir do riarthóir cosaint pasfhocail i bhfeidhm.", + "Your administrator has enforced a {count} days expiration policy." : "Chuir do riarthóir polasaí éaga {count} lá i bhfeidhm.", "What password should be used for the request?" : "Cén pasfhocal ba chóir a úsáid don iarratas?", "Set a password" : "Socraigh focal faire", "Password" : "Pasfhocal", "Enter a valid password" : "Cuir isteach pasfhocal bailí", "Generate a new password" : "Gin pasfhocal nua", + "Your administrator has enforced a password protection." : "Chuir do riarthóir cosaint pasfhocail i bhfeidhm.", "The request will expire on {date} at midnight and will be password protected." : "Rachaidh an t-iarratas in éag ar {date}ag meán oíche agus beidh sé cosanta ag pasfhocal.", "The request will expire on {date} at midnight." : "Rachaidh an t-iarratas in éag ar{date}ag meán oíche.", "The request will be password protected." : "Beidh an t-iarratas cosanta ag pasfhocal.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Nuair a bheidh tú cruthaithe, is féidir leat an nasc thíos a roinnt chun ligean do dhaoine comhaid a uaslódáil chuig do eolaire.", + "You can now share the link below to allow people to upload files to your directory." : "Is féidir leat an nasc thíos a roinnt anois chun ligean do dhaoine comhaid a uaslódáil chuig do eolaire.", "Share link" : "Comhroinn nasc", "Copy to clipboard" : "Cóipeáil chuig an ngearrthaisce", "Send link via email" : "Seol an nasc trí ríomhphost", @@ -156,31 +156,33 @@ OC.L10N.register( "Request subject" : "Ábhar an iarratais", "Birthday party photos, History assignment…" : "Grianghraif cóisir lá breithe, tasc Staire…", "Where should these files go?" : "Cá háit ar cheart do na comhaid seo dul?", - "The uploaded files are visible only to you unless you choose to share them." : "Ní féidir leatsa ach na comhaid uaslódáilte a fheiceáil ach amháin má roghnaíonn tú iad a roinnt.", "Upload destination" : "Íoslódáil an ceann scríbe", "Select a destination" : "Roghnaigh ceann scríbe", "Revert to default" : "Fill ar an réamhshocrú", + "The uploaded files are visible only to you unless you choose to share them." : "Ní féidir leatsa ach na comhaid uaslódáilte a fheiceáil ach amháin má roghnaíonn tú iad a roinnt.", "Add a note" : "Cuir nóta leis", "Note for recipient" : "Nóta don fhaighteoir", "Add a note to help people understand what you are requesting." : "Cuir nóta leis chun cabhrú le daoine a bhfuil á iarraidh agat a thuiscint.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Is féidir leat naisc, dáta nó aon fhaisnéis eile a chur leis a chabhróidh leis an bhfaighteoir a bhfuil á iarraidh agat a thuiscint.", "Select" : "Roghnaigh", "Create a file request" : "Cruthaigh iarratas comhad", "File request created" : "Cruthaíodh iarratas comhaid", "Collect files from others even if they do not have an account." : "Bailigh comhaid ó dhaoine eile fiú mura bhfuil cuntas acu.", "To ensure you can receive files, verify you have enough storage available." : "Chun a chinntiú gur féidir leat comhaid a fháil, deimhnigh go bhfuil go leor stórála ar fáil agat.", "File request" : "Iarratas comhad", + "Previous step" : "An chéim roimhe seo", "Cancel" : "Cealaigh", "Cancel the file request creation" : "Cealaigh cruthú an iarratais comhaid", - "Previous step" : "An chéim roimhe seo", - "Continue" : "Lean ar aghaidh", + "Close without sending emails" : "Dún gan ríomhphoist a sheoladh", "Close" : "Dún", + "Continue" : "Lean ar aghaidh", "Please select a folder, you cannot share the root directory." : "Roghnaigh fillteán, le do thoil, ní féidir leat an eolaire fréimhe a roinnt.", - "File request created and emails sent" : "Cruthaíodh iarratas comhaid agus seoladh ríomhphoist", "Error creating the share: {errorMessage}" : "Earráid agus an sciar á cruthú: {errorMessage}", "Error creating the share" : "Earráid agus an sciar á cruthú", "Error sending emails: {errorMessage}" : "Earráid agus ríomhphoist á seoladh: {errorMessage}", "Error sending emails" : "Earráid agus ríomhphoist á seoladh", - "_Close and send email_::_Close and send {count} emails_" : ["Dún agus seol ríomhphost","Dún agus seol {count} ríomhphost","Dún agus seol {count} ríomhphost","Dún agus seol {count} ríomhphost","Dún agus seol {count} ríomhphost"], + "_Send email and close_::_Send {count} emails and close_" : ["Seol ríomhphost agus dún","Seol {count} ríomhphost agus dún","Seol {count} ríomhphost agus dún","Seol {count} ríomhphost agus dún","Seol {count} ríomhphost agus dún"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["Cruthaíodh iarratas comhaid agus seoladh ríomhphost","Cruthaíodh iarratas comhaid agus seoladh {count} ríomhphost","Cruthaíodh iarratas comhaid agus seoladh {count} ríomhphost","Cruthaíodh iarratas comhaid agus seoladh {count} ríomhphost","Cruthaíodh iarratas comhaid agus seoladh {count} ríomhphost"], "Sharing" : "Roinnt", "Accept shares from other accounts and groups by default" : "Glac le scaireanna ó chuntais agus ó ghrúpaí eile de réir réamhshocraithe", "Error while toggling options" : "Earráid agus roghanna á scoránú", @@ -251,6 +253,11 @@ OC.L10N.register( "Deck board" : "Bord deic", "ScienceMesh" : "EolaíochtMesh", "on {server}" : "ar {server}", + "{ownerDisplayName} shared a folder with you." : "Roinn {ownerDisplayName} fillteán leat.", + "To upload files, you need to provide your name first." : "Chun comhaid a uaslódáil, ní mór duit d'ainm a sholáthar ar dtús.", + "Enter your name" : "Cuir isteach d'ainm", + "Submit name" : "Cuir ainm", + "Upload files to {folder}" : "Uaslódáil comhaid go {folder}", "Allow upload and editing" : "Ceadaigh uaslódáil agus eagarthóireacht", "Allow editing" : "Allow editing", "Upload only" : "Uaslódáil ach amháin", @@ -303,7 +310,7 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "Comhad \"{path}\" díroinnte", "Folder \"{path}\" has been unshared" : "Díroinneadh an fillteán \"{path}\".", "Share {propertyName} saved" : "Roinn {propertyName} sábháilte", - "Create new file request" : "Cruthaigh iarratas comhad nua", + "Create file request" : "Cruthaigh iarratas comhad", "Shared by" : "Roinnte ag", "Shared with" : "Roinnte le", "Password created successfully" : "Pasfhocal cruthaithe go rathúil", @@ -338,6 +345,7 @@ OC.L10N.register( "Shares you have received but not approved will show up here" : "Taispeánfar scaireanna atá faighte agat ach nár faomhadh anseo", "Share note" : "Roinn nóta", "Upload files to %s" : "Uaslódáil comhaid go %s", + "%s shared a folder with you." : "Roinn %s fillteán leat.", "Note" : "Nóta", "Select or drop files" : "Roghnaigh nó scaoil comhaid", "Uploading files" : "Comhaid a uaslódáil", diff --git a/apps/files_sharing/l10n/ga.json b/apps/files_sharing/l10n/ga.json index 28efc4944cc..3ef951dbaa2 100644 --- a/apps/files_sharing/l10n/ga.json +++ b/apps/files_sharing/l10n/ga.json @@ -124,21 +124,21 @@ "Accept" : "Glac", "Decline" : "Meath", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Cuireann an feidhmchlár seo ar chumas daoine comhaid a roinnt laistigh de Nextcloud. Má tá sé cumasaithe, is féidir leis an riarthóir a roghnú cé na grúpaí ar féidir leo comhaid a roinnt. Is féidir leis na daoine infheidhme comhaid agus fillteáin a roinnt ansin le cuntais agus grúpaí eile laistigh de Nextcloud. Ina theannta sin, má chumasaíonn an riarthóir an ghné nasc comhroinnte, is féidir nasc seachtrach a úsáid chun comhaid a roinnt le daoine eile lasmuigh de Nextcloud. Is féidir le riarthóirí pasfhocail, dátaí éaga a fhorfheidhmiú freisin, agus roinnt freastalaí a chumasú trí naisc scaireanna, chomh maith le comhroinnt ó ghléasanna soghluaiste.\nMá mhúchtar an ghné, baintear comhaid agus fillteáin roinnte ar an bhfreastalaí do gach faighteoir scaireanna, agus freisin ar na cliaint sioncronaithe agus aipeanna móibíleacha. Tá tuilleadh eolais ar fáil sa Doiciméadúchán Nextcloud.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Tá dáta éaga réamhshocraithe curtha i bhfeidhm ag do riarthóir a bhfuil uasmhéid {days} lá air.", "When should the request expire?" : "Cathain ar cheart don iarratas dul in éag?", - "Set a submission expirationDate" : "Socraigh dáta éaga aighneachta", + "Set a submission expiration date" : "Socraigh dáta éaga aighneachta", "Expiration date" : "Dáta éaga", "Select a date" : "Roghnaigh dáta", - "Your administrator has enforced a password protection." : "Chuir do riarthóir cosaint pasfhocail i bhfeidhm.", + "Your administrator has enforced a {count} days expiration policy." : "Chuir do riarthóir polasaí éaga {count} lá i bhfeidhm.", "What password should be used for the request?" : "Cén pasfhocal ba chóir a úsáid don iarratas?", "Set a password" : "Socraigh focal faire", "Password" : "Pasfhocal", "Enter a valid password" : "Cuir isteach pasfhocal bailí", "Generate a new password" : "Gin pasfhocal nua", + "Your administrator has enforced a password protection." : "Chuir do riarthóir cosaint pasfhocail i bhfeidhm.", "The request will expire on {date} at midnight and will be password protected." : "Rachaidh an t-iarratas in éag ar {date}ag meán oíche agus beidh sé cosanta ag pasfhocal.", "The request will expire on {date} at midnight." : "Rachaidh an t-iarratas in éag ar{date}ag meán oíche.", "The request will be password protected." : "Beidh an t-iarratas cosanta ag pasfhocal.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Nuair a bheidh tú cruthaithe, is féidir leat an nasc thíos a roinnt chun ligean do dhaoine comhaid a uaslódáil chuig do eolaire.", + "You can now share the link below to allow people to upload files to your directory." : "Is féidir leat an nasc thíos a roinnt anois chun ligean do dhaoine comhaid a uaslódáil chuig do eolaire.", "Share link" : "Comhroinn nasc", "Copy to clipboard" : "Cóipeáil chuig an ngearrthaisce", "Send link via email" : "Seol an nasc trí ríomhphost", @@ -154,31 +154,33 @@ "Request subject" : "Ábhar an iarratais", "Birthday party photos, History assignment…" : "Grianghraif cóisir lá breithe, tasc Staire…", "Where should these files go?" : "Cá háit ar cheart do na comhaid seo dul?", - "The uploaded files are visible only to you unless you choose to share them." : "Ní féidir leatsa ach na comhaid uaslódáilte a fheiceáil ach amháin má roghnaíonn tú iad a roinnt.", "Upload destination" : "Íoslódáil an ceann scríbe", "Select a destination" : "Roghnaigh ceann scríbe", "Revert to default" : "Fill ar an réamhshocrú", + "The uploaded files are visible only to you unless you choose to share them." : "Ní féidir leatsa ach na comhaid uaslódáilte a fheiceáil ach amháin má roghnaíonn tú iad a roinnt.", "Add a note" : "Cuir nóta leis", "Note for recipient" : "Nóta don fhaighteoir", "Add a note to help people understand what you are requesting." : "Cuir nóta leis chun cabhrú le daoine a bhfuil á iarraidh agat a thuiscint.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Is féidir leat naisc, dáta nó aon fhaisnéis eile a chur leis a chabhróidh leis an bhfaighteoir a bhfuil á iarraidh agat a thuiscint.", "Select" : "Roghnaigh", "Create a file request" : "Cruthaigh iarratas comhad", "File request created" : "Cruthaíodh iarratas comhaid", "Collect files from others even if they do not have an account." : "Bailigh comhaid ó dhaoine eile fiú mura bhfuil cuntas acu.", "To ensure you can receive files, verify you have enough storage available." : "Chun a chinntiú gur féidir leat comhaid a fháil, deimhnigh go bhfuil go leor stórála ar fáil agat.", "File request" : "Iarratas comhad", + "Previous step" : "An chéim roimhe seo", "Cancel" : "Cealaigh", "Cancel the file request creation" : "Cealaigh cruthú an iarratais comhaid", - "Previous step" : "An chéim roimhe seo", - "Continue" : "Lean ar aghaidh", + "Close without sending emails" : "Dún gan ríomhphoist a sheoladh", "Close" : "Dún", + "Continue" : "Lean ar aghaidh", "Please select a folder, you cannot share the root directory." : "Roghnaigh fillteán, le do thoil, ní féidir leat an eolaire fréimhe a roinnt.", - "File request created and emails sent" : "Cruthaíodh iarratas comhaid agus seoladh ríomhphoist", "Error creating the share: {errorMessage}" : "Earráid agus an sciar á cruthú: {errorMessage}", "Error creating the share" : "Earráid agus an sciar á cruthú", "Error sending emails: {errorMessage}" : "Earráid agus ríomhphoist á seoladh: {errorMessage}", "Error sending emails" : "Earráid agus ríomhphoist á seoladh", - "_Close and send email_::_Close and send {count} emails_" : ["Dún agus seol ríomhphost","Dún agus seol {count} ríomhphost","Dún agus seol {count} ríomhphost","Dún agus seol {count} ríomhphost","Dún agus seol {count} ríomhphost"], + "_Send email and close_::_Send {count} emails and close_" : ["Seol ríomhphost agus dún","Seol {count} ríomhphost agus dún","Seol {count} ríomhphost agus dún","Seol {count} ríomhphost agus dún","Seol {count} ríomhphost agus dún"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["Cruthaíodh iarratas comhaid agus seoladh ríomhphost","Cruthaíodh iarratas comhaid agus seoladh {count} ríomhphost","Cruthaíodh iarratas comhaid agus seoladh {count} ríomhphost","Cruthaíodh iarratas comhaid agus seoladh {count} ríomhphost","Cruthaíodh iarratas comhaid agus seoladh {count} ríomhphost"], "Sharing" : "Roinnt", "Accept shares from other accounts and groups by default" : "Glac le scaireanna ó chuntais agus ó ghrúpaí eile de réir réamhshocraithe", "Error while toggling options" : "Earráid agus roghanna á scoránú", @@ -249,6 +251,11 @@ "Deck board" : "Bord deic", "ScienceMesh" : "EolaíochtMesh", "on {server}" : "ar {server}", + "{ownerDisplayName} shared a folder with you." : "Roinn {ownerDisplayName} fillteán leat.", + "To upload files, you need to provide your name first." : "Chun comhaid a uaslódáil, ní mór duit d'ainm a sholáthar ar dtús.", + "Enter your name" : "Cuir isteach d'ainm", + "Submit name" : "Cuir ainm", + "Upload files to {folder}" : "Uaslódáil comhaid go {folder}", "Allow upload and editing" : "Ceadaigh uaslódáil agus eagarthóireacht", "Allow editing" : "Allow editing", "Upload only" : "Uaslódáil ach amháin", @@ -301,7 +308,7 @@ "File \"{path}\" has been unshared" : "Comhad \"{path}\" díroinnte", "Folder \"{path}\" has been unshared" : "Díroinneadh an fillteán \"{path}\".", "Share {propertyName} saved" : "Roinn {propertyName} sábháilte", - "Create new file request" : "Cruthaigh iarratas comhad nua", + "Create file request" : "Cruthaigh iarratas comhad", "Shared by" : "Roinnte ag", "Shared with" : "Roinnte le", "Password created successfully" : "Pasfhocal cruthaithe go rathúil", @@ -336,6 +343,7 @@ "Shares you have received but not approved will show up here" : "Taispeánfar scaireanna atá faighte agat ach nár faomhadh anseo", "Share note" : "Roinn nóta", "Upload files to %s" : "Uaslódáil comhaid go %s", + "%s shared a folder with you." : "Roinn %s fillteán leat.", "Note" : "Nóta", "Select or drop files" : "Roghnaigh nó scaoil comhaid", "Uploading files" : "Comhaid a uaslódáil", diff --git a/apps/files_sharing/l10n/gl.js b/apps/files_sharing/l10n/gl.js index fe7bdf3d408..7c90af57fe9 100644 --- a/apps/files_sharing/l10n/gl.js +++ b/apps/files_sharing/l10n/gl.js @@ -126,21 +126,21 @@ OC.L10N.register( "Accept" : "Aceptar", "Decline" : "Declinar", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Esta aplicación permítelle á xente compartir ficheiros dentro de Nextcloud. Se o activa, a administración do sitio pode escoller que grupos poden compartir ficheiros. As persoas implicadas poderán compartir ficheiros e cartafoles con outras contas e grupos dentro de Nextcloud. Ademais, se a administración activa a característica de ligazón compartida, pode empregarse unha ligazón externa para compartir ficheiros con outras persoas fora de Nextcloud. A administración pode impor o uso de contrasinais ou datas de caducidade e activar a compartición de servidor a servidor mediante ligazóns compartidas, así como compartir dende dispositivos móbiles.\nDesactivar esta característica retira os ficheiros compartidos e os cartafoles do servidor, para todos os receptores, e tamén dos clientes de sincronización e móbiles. Atopará máis información na documentación de Nextcloud.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "A administración do sitio impuxo unha data de caducidade predeterminada cun máximo de {days} días.", "When should the request expire?" : "Cando debe caducar a solicitude?", - "Set a submission expirationDate" : "Definir unha data de caducidade de envío", + "Set a submission expiration date" : "Definir unha data de caducidade de envío", "Expiration date" : "Data de caducidade", "Select a date" : "Seleccione unha data", - "Your administrator has enforced a password protection." : "A administración do sitio aplicou unha protección por contrasinal.", + "Your administrator has enforced a {count} days expiration policy." : "A administración do sitio impuxo unha directiva de caducidade de {count} días.", "What password should be used for the request?" : "Que contrasinal debe empregarse para a solicitude?", "Set a password" : "Definir un contrasinal", "Password" : "Contrasinal", "Enter a valid password" : "Introduza un contrasinal válido", "Generate a new password" : "Xerar un novo contrasinal", + "Your administrator has enforced a password protection." : "A administración do sitio impuxo unha protección por contrasinal.", "The request will expire on {date} at midnight and will be password protected." : "A solicitude caducará na media noite do {date} e estará protexida por contrasinal.", "The request will expire on {date} at midnight." : "A solicitude caducará na media noite do {date}.", "The request will be password protected." : "A solicitude estará protexida por contrasinal.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Unha vez creada, pode compartir a seguinte ligazón para permitir que as persoas envíen ficheiros ao seu directorio.", + "You can now share the link below to allow people to upload files to your directory." : "Agora pode compartir a seguinte ligazón para permitir que as persoas envíen ficheiros ao seu directorio.", "Share link" : "Compartir ligazón", "Copy to clipboard" : "Copiar no portapapeis.", "Send link via email" : "Enviar a ligazón por correo", @@ -156,31 +156,33 @@ OC.L10N.register( "Request subject" : "Asunto da solicitude", "Birthday party photos, History assignment…" : "Fotos da festa de aniversario, tarefa de historia…", "Where should these files go?" : "Onde deben ir estes ficheiros?", - "The uploaded files are visible only to you unless you choose to share them." : "Os ficheiros enviados só son visíbeis para Vde. a non ser que decida compartilos.", "Upload destination" : "Destino do envío", "Select a destination" : "Seleccione un destino", "Revert to default" : "Reverter ao predeterminado", + "The uploaded files are visible only to you unless you choose to share them." : "Os ficheiros enviados só son visíbeis para Vde. a non ser que decida compartilos.", "Add a note" : "Engadir unha nota", "Note for recipient" : "Nota para o destinatario", "Add a note to help people understand what you are requesting." : "Engada unha nota para que a xente comprenda o que está a solicitar.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Pode engadir ligazóns, datas ou calquera outra información que axude ao destinatario a comprender o que está a solicitar.", "Select" : "Seleccionar", "Create a file request" : "Crear unha solicitude de ficheiro", "File request created" : "Creouse a solicitude de ficheiro", "Collect files from others even if they do not have an account." : "Recoller os ficheiros doutros aínda que non teñan unha conta.", "To ensure you can receive files, verify you have enough storage available." : "Para asegurarse de que pode recibir ficheiros, verifique que ten dispoñíbel espazo de almacenamento abondo.", "File request" : "Solicitude de ficheiro", + "Previous step" : "Paso anterior", "Cancel" : "Cancelar", "Cancel the file request creation" : "Cancelar a creación da solicitude de ficheiro", - "Previous step" : "Paso anterior", - "Continue" : "Continuar", + "Close without sending emails" : "Pechar sen enviar o correo", "Close" : "Pechar", + "Continue" : "Continuar", "Please select a folder, you cannot share the root directory." : "Seleccione un cartafol, Vde. non pode compartir o directorio raíz.", - "File request created and emails sent" : "Creouse a solicitude de ficheiro e enviáronse os correos", "Error creating the share: {errorMessage}" : "Produciuse un erro ao crear a compartición: {errorMessage}", "Error creating the share" : "Produciuse un erro ao crear a compartición", "Error sending emails: {errorMessage}" : "Produciuse un erro ao enviar os correos: {errorMessage}", "Error sending emails" : "Produciuse un erro ao enviar os correos", - "_Close and send email_::_Close and send {count} emails_" : ["Pechar e enviar o correo","Pechar e enviar {count} correos"], + "_Send email and close_::_Send {count} emails and close_" : ["Enviar o correo e pechar","Enviar {count} correos e pechar"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["Creouse a solicitude de ficheiro e enviouse o correo","Creouse a solicitude de ficheiros e enviáronse {count} correos"], "Sharing" : "Compartindo", "Accept shares from other accounts and groups by default" : "Aceptar comparticións doutras contas e grupos de xeito predeterminado", "Error while toggling options" : "Produciuse un erro ao alternar as opcións", @@ -251,6 +253,11 @@ OC.L10N.register( "Deck board" : "Taboleiro da Gabeta", "ScienceMesh" : "ScienceMesh", "on {server}" : "en {server}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} compartiu un cartafol con Vde.", + "To upload files, you need to provide your name first." : "Para enviar ficheiros, primeiro debes fornecer o teu nome.", + "Enter your name" : "Introduza o seu nome", + "Submit name" : "Enviar o nome", + "Upload files to {folder}" : "Enviar ficheiros a {folder}", "Allow upload and editing" : "Permitir o envío e a edición", "Allow editing" : "Permitir a edición", "Upload only" : "Só enviar", @@ -303,7 +310,7 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "Foi retirado o ficheiro compartido «{path}».", "Folder \"{path}\" has been unshared" : "Foi retirado o cartafol compartido «{path}».", "Share {propertyName} saved" : "A compartición {propertyName} foi gardada", - "Create new file request" : "Crear unha nova solicitude de ficheiro", + "Create file request" : "Crear unha solicitude de ficheiro", "Shared by" : "Compartido por", "Shared with" : "Compartido con", "Password created successfully" : "O contrasinal foi creado correctamente", @@ -338,6 +345,7 @@ OC.L10N.register( "Shares you have received but not approved will show up here" : "As comparticións que recibiu mais non aprobou amosaranse aquí", "Share note" : "Compartir nota", "Upload files to %s" : "Enviar ficheiros a %s", + "%s shared a folder with you." : "%s compartiu un cartafol con Vde.", "Note" : "Nota", "Select or drop files" : "Seleccione ou arrastre e solte ficheiros", "Uploading files" : "Enviando ficheiros", diff --git a/apps/files_sharing/l10n/gl.json b/apps/files_sharing/l10n/gl.json index d85c020ad81..258b8cdd683 100644 --- a/apps/files_sharing/l10n/gl.json +++ b/apps/files_sharing/l10n/gl.json @@ -124,21 +124,21 @@ "Accept" : "Aceptar", "Decline" : "Declinar", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Esta aplicación permítelle á xente compartir ficheiros dentro de Nextcloud. Se o activa, a administración do sitio pode escoller que grupos poden compartir ficheiros. As persoas implicadas poderán compartir ficheiros e cartafoles con outras contas e grupos dentro de Nextcloud. Ademais, se a administración activa a característica de ligazón compartida, pode empregarse unha ligazón externa para compartir ficheiros con outras persoas fora de Nextcloud. A administración pode impor o uso de contrasinais ou datas de caducidade e activar a compartición de servidor a servidor mediante ligazóns compartidas, así como compartir dende dispositivos móbiles.\nDesactivar esta característica retira os ficheiros compartidos e os cartafoles do servidor, para todos os receptores, e tamén dos clientes de sincronización e móbiles. Atopará máis información na documentación de Nextcloud.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "A administración do sitio impuxo unha data de caducidade predeterminada cun máximo de {days} días.", "When should the request expire?" : "Cando debe caducar a solicitude?", - "Set a submission expirationDate" : "Definir unha data de caducidade de envío", + "Set a submission expiration date" : "Definir unha data de caducidade de envío", "Expiration date" : "Data de caducidade", "Select a date" : "Seleccione unha data", - "Your administrator has enforced a password protection." : "A administración do sitio aplicou unha protección por contrasinal.", + "Your administrator has enforced a {count} days expiration policy." : "A administración do sitio impuxo unha directiva de caducidade de {count} días.", "What password should be used for the request?" : "Que contrasinal debe empregarse para a solicitude?", "Set a password" : "Definir un contrasinal", "Password" : "Contrasinal", "Enter a valid password" : "Introduza un contrasinal válido", "Generate a new password" : "Xerar un novo contrasinal", + "Your administrator has enforced a password protection." : "A administración do sitio impuxo unha protección por contrasinal.", "The request will expire on {date} at midnight and will be password protected." : "A solicitude caducará na media noite do {date} e estará protexida por contrasinal.", "The request will expire on {date} at midnight." : "A solicitude caducará na media noite do {date}.", "The request will be password protected." : "A solicitude estará protexida por contrasinal.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Unha vez creada, pode compartir a seguinte ligazón para permitir que as persoas envíen ficheiros ao seu directorio.", + "You can now share the link below to allow people to upload files to your directory." : "Agora pode compartir a seguinte ligazón para permitir que as persoas envíen ficheiros ao seu directorio.", "Share link" : "Compartir ligazón", "Copy to clipboard" : "Copiar no portapapeis.", "Send link via email" : "Enviar a ligazón por correo", @@ -154,31 +154,33 @@ "Request subject" : "Asunto da solicitude", "Birthday party photos, History assignment…" : "Fotos da festa de aniversario, tarefa de historia…", "Where should these files go?" : "Onde deben ir estes ficheiros?", - "The uploaded files are visible only to you unless you choose to share them." : "Os ficheiros enviados só son visíbeis para Vde. a non ser que decida compartilos.", "Upload destination" : "Destino do envío", "Select a destination" : "Seleccione un destino", "Revert to default" : "Reverter ao predeterminado", + "The uploaded files are visible only to you unless you choose to share them." : "Os ficheiros enviados só son visíbeis para Vde. a non ser que decida compartilos.", "Add a note" : "Engadir unha nota", "Note for recipient" : "Nota para o destinatario", "Add a note to help people understand what you are requesting." : "Engada unha nota para que a xente comprenda o que está a solicitar.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Pode engadir ligazóns, datas ou calquera outra información que axude ao destinatario a comprender o que está a solicitar.", "Select" : "Seleccionar", "Create a file request" : "Crear unha solicitude de ficheiro", "File request created" : "Creouse a solicitude de ficheiro", "Collect files from others even if they do not have an account." : "Recoller os ficheiros doutros aínda que non teñan unha conta.", "To ensure you can receive files, verify you have enough storage available." : "Para asegurarse de que pode recibir ficheiros, verifique que ten dispoñíbel espazo de almacenamento abondo.", "File request" : "Solicitude de ficheiro", + "Previous step" : "Paso anterior", "Cancel" : "Cancelar", "Cancel the file request creation" : "Cancelar a creación da solicitude de ficheiro", - "Previous step" : "Paso anterior", - "Continue" : "Continuar", + "Close without sending emails" : "Pechar sen enviar o correo", "Close" : "Pechar", + "Continue" : "Continuar", "Please select a folder, you cannot share the root directory." : "Seleccione un cartafol, Vde. non pode compartir o directorio raíz.", - "File request created and emails sent" : "Creouse a solicitude de ficheiro e enviáronse os correos", "Error creating the share: {errorMessage}" : "Produciuse un erro ao crear a compartición: {errorMessage}", "Error creating the share" : "Produciuse un erro ao crear a compartición", "Error sending emails: {errorMessage}" : "Produciuse un erro ao enviar os correos: {errorMessage}", "Error sending emails" : "Produciuse un erro ao enviar os correos", - "_Close and send email_::_Close and send {count} emails_" : ["Pechar e enviar o correo","Pechar e enviar {count} correos"], + "_Send email and close_::_Send {count} emails and close_" : ["Enviar o correo e pechar","Enviar {count} correos e pechar"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["Creouse a solicitude de ficheiro e enviouse o correo","Creouse a solicitude de ficheiros e enviáronse {count} correos"], "Sharing" : "Compartindo", "Accept shares from other accounts and groups by default" : "Aceptar comparticións doutras contas e grupos de xeito predeterminado", "Error while toggling options" : "Produciuse un erro ao alternar as opcións", @@ -249,6 +251,11 @@ "Deck board" : "Taboleiro da Gabeta", "ScienceMesh" : "ScienceMesh", "on {server}" : "en {server}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} compartiu un cartafol con Vde.", + "To upload files, you need to provide your name first." : "Para enviar ficheiros, primeiro debes fornecer o teu nome.", + "Enter your name" : "Introduza o seu nome", + "Submit name" : "Enviar o nome", + "Upload files to {folder}" : "Enviar ficheiros a {folder}", "Allow upload and editing" : "Permitir o envío e a edición", "Allow editing" : "Permitir a edición", "Upload only" : "Só enviar", @@ -301,7 +308,7 @@ "File \"{path}\" has been unshared" : "Foi retirado o ficheiro compartido «{path}».", "Folder \"{path}\" has been unshared" : "Foi retirado o cartafol compartido «{path}».", "Share {propertyName} saved" : "A compartición {propertyName} foi gardada", - "Create new file request" : "Crear unha nova solicitude de ficheiro", + "Create file request" : "Crear unha solicitude de ficheiro", "Shared by" : "Compartido por", "Shared with" : "Compartido con", "Password created successfully" : "O contrasinal foi creado correctamente", @@ -336,6 +343,7 @@ "Shares you have received but not approved will show up here" : "As comparticións que recibiu mais non aprobou amosaranse aquí", "Share note" : "Compartir nota", "Upload files to %s" : "Enviar ficheiros a %s", + "%s shared a folder with you." : "%s compartiu un cartafol con Vde.", "Note" : "Nota", "Select or drop files" : "Seleccione ou arrastre e solte ficheiros", "Uploading files" : "Enviando ficheiros", diff --git a/apps/files_sharing/l10n/he.js b/apps/files_sharing/l10n/he.js index 54f6638a6ca..89678538bae 100644 --- a/apps/files_sharing/l10n/he.js +++ b/apps/files_sharing/l10n/he.js @@ -111,8 +111,8 @@ OC.L10N.register( "Link copied to clipboard" : "הקישור הועתק ללוח הגזירים", "Select" : "בחר", "Cancel" : "ביטול", - "Continue" : "להמשך", "Close" : "סגירה", + "Continue" : "להמשך", "Error creating the share" : "יצירת השיתוף נכשלה", "Sharing" : "שיתוף", "Reset" : "איפוס", @@ -159,6 +159,7 @@ OC.L10N.register( "Email" : "דוא״ל", "Deck board" : "לוח חסיפה", "on {server}" : "על גבי {server}", + "Enter your name" : "נא למלא את שמך", "Allow upload and editing" : "לאפשר העלאה ועריכה", "Allow editing" : "לאפשר עריכה", "Advanced settings" : "הגדרות מתקדמות", diff --git a/apps/files_sharing/l10n/he.json b/apps/files_sharing/l10n/he.json index 22529af77c2..e2602d2e496 100644 --- a/apps/files_sharing/l10n/he.json +++ b/apps/files_sharing/l10n/he.json @@ -109,8 +109,8 @@ "Link copied to clipboard" : "הקישור הועתק ללוח הגזירים", "Select" : "בחר", "Cancel" : "ביטול", - "Continue" : "להמשך", "Close" : "סגירה", + "Continue" : "להמשך", "Error creating the share" : "יצירת השיתוף נכשלה", "Sharing" : "שיתוף", "Reset" : "איפוס", @@ -157,6 +157,7 @@ "Email" : "דוא״ל", "Deck board" : "לוח חסיפה", "on {server}" : "על גבי {server}", + "Enter your name" : "נא למלא את שמך", "Allow upload and editing" : "לאפשר העלאה ועריכה", "Allow editing" : "לאפשר עריכה", "Advanced settings" : "הגדרות מתקדמות", diff --git a/apps/files_sharing/l10n/hr.js b/apps/files_sharing/l10n/hr.js index 7148068d412..0dc178529ec 100644 --- a/apps/files_sharing/l10n/hr.js +++ b/apps/files_sharing/l10n/hr.js @@ -114,8 +114,8 @@ OC.L10N.register( "Link copied to clipboard" : "Poveznica je kopirana u međuspremnik", "Select" : "Odaberi", "Cancel" : "Odustani", - "Continue" : "Nastavi", "Close" : "Zatvori", + "Continue" : "Nastavi", "Error creating the share: {errorMessage}" : "Pogreška pri stvaranju dijeljenja: {errorMessage}", "Error creating the share" : "Pogreška pri stvaranju dijeljenja", "Sharing" : "Dijeljenje", @@ -165,6 +165,7 @@ OC.L10N.register( "Talk conversation" : "Razgovori u alatu Talk", "Deck board" : "Deck ploča", "on {server}" : "na {server}", + "Enter your name" : "Unesite svoje ime", "Allow upload and editing" : "Omogući otpremanje i uređivanje", "Allow editing" : "Dopusti uređivanje", "Advanced settings" : "Napredne postavke", diff --git a/apps/files_sharing/l10n/hr.json b/apps/files_sharing/l10n/hr.json index 93d5b847716..2992a079453 100644 --- a/apps/files_sharing/l10n/hr.json +++ b/apps/files_sharing/l10n/hr.json @@ -112,8 +112,8 @@ "Link copied to clipboard" : "Poveznica je kopirana u međuspremnik", "Select" : "Odaberi", "Cancel" : "Odustani", - "Continue" : "Nastavi", "Close" : "Zatvori", + "Continue" : "Nastavi", "Error creating the share: {errorMessage}" : "Pogreška pri stvaranju dijeljenja: {errorMessage}", "Error creating the share" : "Pogreška pri stvaranju dijeljenja", "Sharing" : "Dijeljenje", @@ -163,6 +163,7 @@ "Talk conversation" : "Razgovori u alatu Talk", "Deck board" : "Deck ploča", "on {server}" : "na {server}", + "Enter your name" : "Unesite svoje ime", "Allow upload and editing" : "Omogući otpremanje i uređivanje", "Allow editing" : "Dopusti uređivanje", "Advanced settings" : "Napredne postavke", diff --git a/apps/files_sharing/l10n/hu.js b/apps/files_sharing/l10n/hu.js index ed91fbdcdb8..577fbbecfc4 100644 --- a/apps/files_sharing/l10n/hu.js +++ b/apps/files_sharing/l10n/hu.js @@ -122,8 +122,8 @@ OC.L10N.register( "Link copied to clipboard" : "Hivatkozás a vágólapra másolva", "Select" : "Kiválasztás", "Cancel" : "Mégse", - "Continue" : "Folytatás", "Close" : "Bezárás", + "Continue" : "Folytatás", "Error creating the share: {errorMessage}" : "Hiba történt a megosztás létrehozása során: {errorMessage}", "Error creating the share" : "Megosztás létrehozása sikertelen", "Sharing" : "Megosztás", @@ -188,6 +188,7 @@ OC.L10N.register( "Deck board" : "Kártyatábla", "ScienceMesh" : "ScienceMesh", "on {server}" : "{server} kiszolgálón", + "Enter your name" : "Adja meg a nevét", "Allow upload and editing" : "Feltöltés és szerkesztés engedélyezése", "Allow editing" : "Szerkesztés engedélyezése", "Upload only" : "Csak feltöltés", diff --git a/apps/files_sharing/l10n/hu.json b/apps/files_sharing/l10n/hu.json index a328e4c0547..1f981299ad6 100644 --- a/apps/files_sharing/l10n/hu.json +++ b/apps/files_sharing/l10n/hu.json @@ -120,8 +120,8 @@ "Link copied to clipboard" : "Hivatkozás a vágólapra másolva", "Select" : "Kiválasztás", "Cancel" : "Mégse", - "Continue" : "Folytatás", "Close" : "Bezárás", + "Continue" : "Folytatás", "Error creating the share: {errorMessage}" : "Hiba történt a megosztás létrehozása során: {errorMessage}", "Error creating the share" : "Megosztás létrehozása sikertelen", "Sharing" : "Megosztás", @@ -186,6 +186,7 @@ "Deck board" : "Kártyatábla", "ScienceMesh" : "ScienceMesh", "on {server}" : "{server} kiszolgálón", + "Enter your name" : "Adja meg a nevét", "Allow upload and editing" : "Feltöltés és szerkesztés engedélyezése", "Allow editing" : "Szerkesztés engedélyezése", "Upload only" : "Csak feltöltés", diff --git a/apps/files_sharing/l10n/is.js b/apps/files_sharing/l10n/is.js index ecd06a0e3c1..04648f288ab 100644 --- a/apps/files_sharing/l10n/is.js +++ b/apps/files_sharing/l10n/is.js @@ -122,8 +122,8 @@ OC.L10N.register( "Link copied to clipboard" : "Tengill afritaður á klippispjald", "Select" : "Velja", "Cancel" : "Hætta við", - "Continue" : "Halda áfram", "Close" : "Loka", + "Continue" : "Halda áfram", "Error creating the share: {errorMessage}" : "Villa kom upp við að búa til sameignina: {errorMessage}", "Error creating the share" : "Villa við að búa til sameignina", "Sharing" : "Deiling", @@ -188,6 +188,7 @@ OC.L10N.register( "Deck board" : "Deck-borð", "ScienceMesh" : "ScienceMesh", "on {server}" : "á {server}", + "Enter your name" : "Settu inn nafnið þitt", "Allow upload and editing" : "Leyfa innsendingu og breytingar", "Allow editing" : "Leyfa breytingar", "Upload only" : "Einungis innsending", diff --git a/apps/files_sharing/l10n/is.json b/apps/files_sharing/l10n/is.json index efc92ae8ba5..c128d919808 100644 --- a/apps/files_sharing/l10n/is.json +++ b/apps/files_sharing/l10n/is.json @@ -120,8 +120,8 @@ "Link copied to clipboard" : "Tengill afritaður á klippispjald", "Select" : "Velja", "Cancel" : "Hætta við", - "Continue" : "Halda áfram", "Close" : "Loka", + "Continue" : "Halda áfram", "Error creating the share: {errorMessage}" : "Villa kom upp við að búa til sameignina: {errorMessage}", "Error creating the share" : "Villa við að búa til sameignina", "Sharing" : "Deiling", @@ -186,6 +186,7 @@ "Deck board" : "Deck-borð", "ScienceMesh" : "ScienceMesh", "on {server}" : "á {server}", + "Enter your name" : "Settu inn nafnið þitt", "Allow upload and editing" : "Leyfa innsendingu og breytingar", "Allow editing" : "Leyfa breytingar", "Upload only" : "Einungis innsending", diff --git a/apps/files_sharing/l10n/it.js b/apps/files_sharing/l10n/it.js index 44eaca7dd55..3e004386b86 100644 --- a/apps/files_sharing/l10n/it.js +++ b/apps/files_sharing/l10n/it.js @@ -126,21 +126,18 @@ OC.L10N.register( "Accept" : "Accetta", "Decline" : "Rifiuta", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Questa applicazione consente agli utenti di condividere file all'interno di Nextcloud. Se abilitata, l'amministratore può scegliere quali gruppi possono condividere file. Gli utenti ai quali si applica possono quindi condividere file e cartelle con altri utenti e gruppi all'interno di Nextcloud. In aggiunta, se l'amministratore abilita la funzionalità dei collegamenti di condivisione, un collegamento esterno può essere utilizzato per condividere file con altri utenti all'esterno di Nextcloud. Gli amministratori possono inoltre forzare le password, le date di scadenza e abilitare la condivisione tra server tramite collegamenti di condivisione, così come la condivisione da dispositivi mobili.\nLa disattivazione della funzionalità rimuove i file e le cartelle condivisi sul server per tutti i destinatari della condivisione, e anche sui client di sincronizzazione e sulle applicazioni mobili. Altre informazioni sono disponibili nella documentazione di Nextcloud.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Il tuo amministratore ha imposto una data di scadenza predefinita con un massimo di {days} giorni.", "When should the request expire?" : "Quando deve scadere la richiesta?", - "Set a submission expirationDate" : "Imposta data di scadenza dell'invio ", "Expiration date" : "Data di scadenza", "Select a date" : "Seleziona una data", - "Your administrator has enforced a password protection." : "Il tuo amministratore ha imposto una protezione con password.", "What password should be used for the request?" : "Che password deve essere usata per la richiesta?", "Set a password" : "Imposta una password", "Password" : "Password", "Enter a valid password" : "Inserisci una password valida", "Generate a new password" : "Genera una password nuova", + "Your administrator has enforced a password protection." : "Il tuo amministratore ha imposto una protezione con password.", "The request will expire on {date} at midnight and will be password protected." : "La richiesta scadrà il {date} a mezzanotte e sarà protetta da password.", "The request will expire on {date} at midnight." : "La richiesta scadrà il {date} a mezzanotte.", "The request will be password protected." : "La richiesta sarà protetta da password.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Una volta creato, puoi condividere il collegamento sotto per consentire alle persone di caricare file nella tua cartella.", "Share link" : "Condividi collegamento", "Copy to clipboard" : "Copia negli appunti", "Send link via email" : "Invia collegamento tramite email", @@ -156,10 +153,10 @@ OC.L10N.register( "Request subject" : "Oggetto della richiesta", "Birthday party photos, History assignment…" : "Foto della festa di compleanno, compito di storia…", "Where should these files go?" : "Dove devono finire questi file?", - "The uploaded files are visible only to you unless you choose to share them." : "I file caricati sono visibili solo a te a meno che tu scelga di condividerli.", "Upload destination" : "Destinazione di caricamento", "Select a destination" : "Seleziona una destinazione", "Revert to default" : "Ripristina valore predefinito", + "The uploaded files are visible only to you unless you choose to share them." : "I file caricati sono visibili solo a te a meno che tu scelga di condividerli.", "Add a note" : "Aggiungi una nota", "Note for recipient" : "Nota per il destinatario", "Add a note to help people understand what you are requesting." : "Aggiungi una nota per aiutare le persone a capire cosa stai richiedendo.", @@ -169,18 +166,16 @@ OC.L10N.register( "Collect files from others even if they do not have an account." : "Ritira file dagli altri anche se non hanno un account.", "To ensure you can receive files, verify you have enough storage available." : "Per assicurarti di potere ricevere file, verifica di avere abbastanza spazio disponibile.", "File request" : "Richiesta file", + "Previous step" : "Passo precedente", "Cancel" : "Annulla", "Cancel the file request creation" : "Annulla la creazione della richiesta di file", - "Previous step" : "Passo precedente", - "Continue" : "Continua", "Close" : "Chiudi", + "Continue" : "Continua", "Please select a folder, you cannot share the root directory." : "Seleziona una cartella, non puoi condividere la cartella radice.", - "File request created and emails sent" : "Richiesta di file creata e email inviata", "Error creating the share: {errorMessage}" : "Errore durante la creazione della condivisione: {errorMessage}", "Error creating the share" : "Errore durante la creazione della condivisione", "Error sending emails: {errorMessage}" : "Errore di invio delle email: {errorMessage}", "Error sending emails" : "Errore di invio delle email", - "_Close and send email_::_Close and send {count} emails_" : ["Chiudi e invia email","Chiudi e invia {count} email","Chiudi e invia {count} email"], "Sharing" : "Condivisione", "Accept shares from other accounts and groups by default" : "Accetta condivisioni da altri account e gruppi per impostazione predefinita", "Error while toggling options" : "Errore durante il cambio delle opzioni", @@ -251,6 +246,7 @@ OC.L10N.register( "Deck board" : "Lavagna di Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "su {server}", + "Enter your name" : "Digita il tuo nome", "Allow upload and editing" : "Consenti caricamento e modifica", "Allow editing" : "Consenti la modifica", "Upload only" : "Solo caricamento", @@ -303,7 +299,6 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "La condivisione del file \"{path}\" è stata rimossa", "Folder \"{path}\" has been unshared" : "La condivisione della cartella \"{path}\" è stata rimossa", "Share {propertyName} saved" : "Condivisione {propertyName} salvata", - "Create new file request" : "Crea una nuova richiesta di file", "Shared by" : "Condiviso da", "Shared with" : "Condiviso con", "Password created successfully" : "Password creata correttamente", diff --git a/apps/files_sharing/l10n/it.json b/apps/files_sharing/l10n/it.json index 3431193c065..73c48381fcd 100644 --- a/apps/files_sharing/l10n/it.json +++ b/apps/files_sharing/l10n/it.json @@ -124,21 +124,18 @@ "Accept" : "Accetta", "Decline" : "Rifiuta", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Questa applicazione consente agli utenti di condividere file all'interno di Nextcloud. Se abilitata, l'amministratore può scegliere quali gruppi possono condividere file. Gli utenti ai quali si applica possono quindi condividere file e cartelle con altri utenti e gruppi all'interno di Nextcloud. In aggiunta, se l'amministratore abilita la funzionalità dei collegamenti di condivisione, un collegamento esterno può essere utilizzato per condividere file con altri utenti all'esterno di Nextcloud. Gli amministratori possono inoltre forzare le password, le date di scadenza e abilitare la condivisione tra server tramite collegamenti di condivisione, così come la condivisione da dispositivi mobili.\nLa disattivazione della funzionalità rimuove i file e le cartelle condivisi sul server per tutti i destinatari della condivisione, e anche sui client di sincronizzazione e sulle applicazioni mobili. Altre informazioni sono disponibili nella documentazione di Nextcloud.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Il tuo amministratore ha imposto una data di scadenza predefinita con un massimo di {days} giorni.", "When should the request expire?" : "Quando deve scadere la richiesta?", - "Set a submission expirationDate" : "Imposta data di scadenza dell'invio ", "Expiration date" : "Data di scadenza", "Select a date" : "Seleziona una data", - "Your administrator has enforced a password protection." : "Il tuo amministratore ha imposto una protezione con password.", "What password should be used for the request?" : "Che password deve essere usata per la richiesta?", "Set a password" : "Imposta una password", "Password" : "Password", "Enter a valid password" : "Inserisci una password valida", "Generate a new password" : "Genera una password nuova", + "Your administrator has enforced a password protection." : "Il tuo amministratore ha imposto una protezione con password.", "The request will expire on {date} at midnight and will be password protected." : "La richiesta scadrà il {date} a mezzanotte e sarà protetta da password.", "The request will expire on {date} at midnight." : "La richiesta scadrà il {date} a mezzanotte.", "The request will be password protected." : "La richiesta sarà protetta da password.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Una volta creato, puoi condividere il collegamento sotto per consentire alle persone di caricare file nella tua cartella.", "Share link" : "Condividi collegamento", "Copy to clipboard" : "Copia negli appunti", "Send link via email" : "Invia collegamento tramite email", @@ -154,10 +151,10 @@ "Request subject" : "Oggetto della richiesta", "Birthday party photos, History assignment…" : "Foto della festa di compleanno, compito di storia…", "Where should these files go?" : "Dove devono finire questi file?", - "The uploaded files are visible only to you unless you choose to share them." : "I file caricati sono visibili solo a te a meno che tu scelga di condividerli.", "Upload destination" : "Destinazione di caricamento", "Select a destination" : "Seleziona una destinazione", "Revert to default" : "Ripristina valore predefinito", + "The uploaded files are visible only to you unless you choose to share them." : "I file caricati sono visibili solo a te a meno che tu scelga di condividerli.", "Add a note" : "Aggiungi una nota", "Note for recipient" : "Nota per il destinatario", "Add a note to help people understand what you are requesting." : "Aggiungi una nota per aiutare le persone a capire cosa stai richiedendo.", @@ -167,18 +164,16 @@ "Collect files from others even if they do not have an account." : "Ritira file dagli altri anche se non hanno un account.", "To ensure you can receive files, verify you have enough storage available." : "Per assicurarti di potere ricevere file, verifica di avere abbastanza spazio disponibile.", "File request" : "Richiesta file", + "Previous step" : "Passo precedente", "Cancel" : "Annulla", "Cancel the file request creation" : "Annulla la creazione della richiesta di file", - "Previous step" : "Passo precedente", - "Continue" : "Continua", "Close" : "Chiudi", + "Continue" : "Continua", "Please select a folder, you cannot share the root directory." : "Seleziona una cartella, non puoi condividere la cartella radice.", - "File request created and emails sent" : "Richiesta di file creata e email inviata", "Error creating the share: {errorMessage}" : "Errore durante la creazione della condivisione: {errorMessage}", "Error creating the share" : "Errore durante la creazione della condivisione", "Error sending emails: {errorMessage}" : "Errore di invio delle email: {errorMessage}", "Error sending emails" : "Errore di invio delle email", - "_Close and send email_::_Close and send {count} emails_" : ["Chiudi e invia email","Chiudi e invia {count} email","Chiudi e invia {count} email"], "Sharing" : "Condivisione", "Accept shares from other accounts and groups by default" : "Accetta condivisioni da altri account e gruppi per impostazione predefinita", "Error while toggling options" : "Errore durante il cambio delle opzioni", @@ -249,6 +244,7 @@ "Deck board" : "Lavagna di Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "su {server}", + "Enter your name" : "Digita il tuo nome", "Allow upload and editing" : "Consenti caricamento e modifica", "Allow editing" : "Consenti la modifica", "Upload only" : "Solo caricamento", @@ -301,7 +297,6 @@ "File \"{path}\" has been unshared" : "La condivisione del file \"{path}\" è stata rimossa", "Folder \"{path}\" has been unshared" : "La condivisione della cartella \"{path}\" è stata rimossa", "Share {propertyName} saved" : "Condivisione {propertyName} salvata", - "Create new file request" : "Crea una nuova richiesta di file", "Shared by" : "Condiviso da", "Shared with" : "Condiviso con", "Password created successfully" : "Password creata correttamente", diff --git a/apps/files_sharing/l10n/ja.js b/apps/files_sharing/l10n/ja.js index 39607e9c882..69dfffcea55 100644 --- a/apps/files_sharing/l10n/ja.js +++ b/apps/files_sharing/l10n/ja.js @@ -125,8 +125,8 @@ OC.L10N.register( "Link copied to clipboard" : "クリップボードにリンクをコピーしました", "Select" : "選択", "Cancel" : "キャンセル", - "Continue" : "続ける", "Close" : "閉じる", + "Continue" : "続ける", "Error creating the share: {errorMessage}" : "共有の作成中にエラーが発生しました: {errorMessage}", "Error creating the share" : "共有の作成中にエラーが発生しました", "Sharing" : "共有", @@ -197,6 +197,7 @@ OC.L10N.register( "Deck board" : "Deckボード", "ScienceMesh" : "ScienceMesh", "on {server}" : "{server} に", + "Enter your name" : "あなたの名前を入力", "Allow upload and editing" : "アップロードと編集を許可", "Allow editing" : "編集を許可", "Upload only" : "アップロードのみ", diff --git a/apps/files_sharing/l10n/ja.json b/apps/files_sharing/l10n/ja.json index bcd5981d421..1f498491759 100644 --- a/apps/files_sharing/l10n/ja.json +++ b/apps/files_sharing/l10n/ja.json @@ -123,8 +123,8 @@ "Link copied to clipboard" : "クリップボードにリンクをコピーしました", "Select" : "選択", "Cancel" : "キャンセル", - "Continue" : "続ける", "Close" : "閉じる", + "Continue" : "続ける", "Error creating the share: {errorMessage}" : "共有の作成中にエラーが発生しました: {errorMessage}", "Error creating the share" : "共有の作成中にエラーが発生しました", "Sharing" : "共有", @@ -195,6 +195,7 @@ "Deck board" : "Deckボード", "ScienceMesh" : "ScienceMesh", "on {server}" : "{server} に", + "Enter your name" : "あなたの名前を入力", "Allow upload and editing" : "アップロードと編集を許可", "Allow editing" : "編集を許可", "Upload only" : "アップロードのみ", diff --git a/apps/files_sharing/l10n/ka.js b/apps/files_sharing/l10n/ka.js index cef0d57bb01..a98b478d9cd 100644 --- a/apps/files_sharing/l10n/ka.js +++ b/apps/files_sharing/l10n/ka.js @@ -119,8 +119,8 @@ OC.L10N.register( "Copy to clipboard" : "Copy to clipboard", "Select" : "Select", "Cancel" : "Cancel", - "Continue" : "Continue", "Close" : "Close", + "Continue" : "Continue", "Error creating the share: {errorMessage}" : "Error creating the share: {errorMessage}", "Error creating the share" : "Error creating the share", "Sharing" : "Sharing", @@ -185,6 +185,7 @@ OC.L10N.register( "Deck board" : "Deck board", "ScienceMesh" : "ScienceMesh", "on {server}" : "on {server}", + "Enter your name" : "Enter your name", "Allow upload and editing" : "Allow upload and editing", "Allow editing" : "Allow editing", "Upload only" : "Upload only", diff --git a/apps/files_sharing/l10n/ka.json b/apps/files_sharing/l10n/ka.json index 6b17fbe5aed..0445d059614 100644 --- a/apps/files_sharing/l10n/ka.json +++ b/apps/files_sharing/l10n/ka.json @@ -117,8 +117,8 @@ "Copy to clipboard" : "Copy to clipboard", "Select" : "Select", "Cancel" : "Cancel", - "Continue" : "Continue", "Close" : "Close", + "Continue" : "Continue", "Error creating the share: {errorMessage}" : "Error creating the share: {errorMessage}", "Error creating the share" : "Error creating the share", "Sharing" : "Sharing", @@ -183,6 +183,7 @@ "Deck board" : "Deck board", "ScienceMesh" : "ScienceMesh", "on {server}" : "on {server}", + "Enter your name" : "Enter your name", "Allow upload and editing" : "Allow upload and editing", "Allow editing" : "Allow editing", "Upload only" : "Upload only", diff --git a/apps/files_sharing/l10n/ko.js b/apps/files_sharing/l10n/ko.js index a811da6aeed..73a78e54e4d 100644 --- a/apps/files_sharing/l10n/ko.js +++ b/apps/files_sharing/l10n/ko.js @@ -124,8 +124,8 @@ OC.L10N.register( "Link copied to clipboard" : "링크가 클립보드로 복사됨", "Select" : "선택", "Cancel" : "취소", - "Continue" : "계속", "Close" : "닫기", + "Continue" : "계속", "Error creating the share: {errorMessage}" : "공유를 만드는 중 오류 발생: {errorMessage}", "Error creating the share" : "공유를 만드는 중 오류 발생", "Sharing" : "공유", @@ -190,6 +190,7 @@ OC.L10N.register( "Talk conversation" : "토크 대화", "Deck board" : "Deck 보드", "on {server}" : "{server}에서", + "Enter your name" : "이름을 입력하세요", "Allow upload and editing" : "업로드와 수정 허용", "Allow editing" : "수정 허용", "Upload only" : "업로드만", diff --git a/apps/files_sharing/l10n/ko.json b/apps/files_sharing/l10n/ko.json index 47dc7826008..bb0e775e8bd 100644 --- a/apps/files_sharing/l10n/ko.json +++ b/apps/files_sharing/l10n/ko.json @@ -122,8 +122,8 @@ "Link copied to clipboard" : "링크가 클립보드로 복사됨", "Select" : "선택", "Cancel" : "취소", - "Continue" : "계속", "Close" : "닫기", + "Continue" : "계속", "Error creating the share: {errorMessage}" : "공유를 만드는 중 오류 발생: {errorMessage}", "Error creating the share" : "공유를 만드는 중 오류 발생", "Sharing" : "공유", @@ -188,6 +188,7 @@ "Talk conversation" : "토크 대화", "Deck board" : "Deck 보드", "on {server}" : "{server}에서", + "Enter your name" : "이름을 입력하세요", "Allow upload and editing" : "업로드와 수정 허용", "Allow editing" : "수정 허용", "Upload only" : "업로드만", diff --git a/apps/files_sharing/l10n/lt_LT.js b/apps/files_sharing/l10n/lt_LT.js index 9e96ede4254..f3c264c0ee4 100644 --- a/apps/files_sharing/l10n/lt_LT.js +++ b/apps/files_sharing/l10n/lt_LT.js @@ -116,8 +116,8 @@ OC.L10N.register( "Link copied to clipboard" : "Nuoroda nukopijuota į iškarpinę", "Select" : "Žymėti", "Cancel" : "Atsisakyti", - "Continue" : "Tęsti", "Close" : "Užverti", + "Continue" : "Tęsti", "Error creating the share: {errorMessage}" : "Klaida kuriant viešinį: {errorMessage}", "Error creating the share" : "Klaida kuriant viešinį", "Sharing" : "Bendrinimas", @@ -167,6 +167,7 @@ OC.L10N.register( "Group" : "Grupė", "Email" : "El. paštas", "on {server}" : "serveryje {server}", + "Enter your name" : "Įveskite savo vardą", "Allow upload and editing" : "Leisti įkelti ir redaguoti", "Allow editing" : "Leisti redaguoti", "Advanced settings" : "Išplėstiniai nustatymai", diff --git a/apps/files_sharing/l10n/lt_LT.json b/apps/files_sharing/l10n/lt_LT.json index 07dc642c3a7..fe503b1ea9c 100644 --- a/apps/files_sharing/l10n/lt_LT.json +++ b/apps/files_sharing/l10n/lt_LT.json @@ -114,8 +114,8 @@ "Link copied to clipboard" : "Nuoroda nukopijuota į iškarpinę", "Select" : "Žymėti", "Cancel" : "Atsisakyti", - "Continue" : "Tęsti", "Close" : "Užverti", + "Continue" : "Tęsti", "Error creating the share: {errorMessage}" : "Klaida kuriant viešinį: {errorMessage}", "Error creating the share" : "Klaida kuriant viešinį", "Sharing" : "Bendrinimas", @@ -165,6 +165,7 @@ "Group" : "Grupė", "Email" : "El. paštas", "on {server}" : "serveryje {server}", + "Enter your name" : "Įveskite savo vardą", "Allow upload and editing" : "Leisti įkelti ir redaguoti", "Allow editing" : "Leisti redaguoti", "Advanced settings" : "Išplėstiniai nustatymai", diff --git a/apps/files_sharing/l10n/lv.js b/apps/files_sharing/l10n/lv.js index 12c3e1ccc4c..24ecd6e1873 100644 --- a/apps/files_sharing/l10n/lv.js +++ b/apps/files_sharing/l10n/lv.js @@ -109,8 +109,8 @@ OC.L10N.register( "Send link via email" : "Sūtīt saiti e-pastā", "Select" : "Atzīmēt", "Cancel" : "Atcelt", - "Continue" : "Turpināt", "Close" : "Aizvērt", + "Continue" : "Turpināt", "Sharing" : "Koplietošana", "Reset" : "Atiestatīt", "Unknown error" : "Nezināma kļūda", diff --git a/apps/files_sharing/l10n/lv.json b/apps/files_sharing/l10n/lv.json index ef68852faf7..b20e049d50c 100644 --- a/apps/files_sharing/l10n/lv.json +++ b/apps/files_sharing/l10n/lv.json @@ -107,8 +107,8 @@ "Send link via email" : "Sūtīt saiti e-pastā", "Select" : "Atzīmēt", "Cancel" : "Atcelt", - "Continue" : "Turpināt", "Close" : "Aizvērt", + "Continue" : "Turpināt", "Sharing" : "Koplietošana", "Reset" : "Atiestatīt", "Unknown error" : "Nezināma kļūda", diff --git a/apps/files_sharing/l10n/mk.js b/apps/files_sharing/l10n/mk.js index 84f7cc6b00f..72c2582a31d 100644 --- a/apps/files_sharing/l10n/mk.js +++ b/apps/files_sharing/l10n/mk.js @@ -118,8 +118,8 @@ OC.L10N.register( "Copy to clipboard" : "Копирај во клипборд", "Select" : "Избери", "Cancel" : "Откажи", - "Continue" : "Продолжи", "Close" : "Затвори", + "Continue" : "Продолжи", "Error creating the share: {errorMessage}" : "Грешка при креирање на споделување: {errorMessage}", "Error creating the share" : "Грешка при креирање на споделување", "Sharing" : "Споделување", diff --git a/apps/files_sharing/l10n/mk.json b/apps/files_sharing/l10n/mk.json index c8c75a5543c..bdb40a41839 100644 --- a/apps/files_sharing/l10n/mk.json +++ b/apps/files_sharing/l10n/mk.json @@ -116,8 +116,8 @@ "Copy to clipboard" : "Копирај во клипборд", "Select" : "Избери", "Cancel" : "Откажи", - "Continue" : "Продолжи", "Close" : "Затвори", + "Continue" : "Продолжи", "Error creating the share: {errorMessage}" : "Грешка при креирање на споделување: {errorMessage}", "Error creating the share" : "Грешка при креирање на споделување", "Sharing" : "Споделување", diff --git a/apps/files_sharing/l10n/nb.js b/apps/files_sharing/l10n/nb.js index 5c64d5e7b5a..9dec9f4675b 100644 --- a/apps/files_sharing/l10n/nb.js +++ b/apps/files_sharing/l10n/nb.js @@ -126,21 +126,21 @@ OC.L10N.register( "Accept" : "Aksepter", "Decline" : "Avslå", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Denne applikasjonen lar personer dele filer i Nextcloud. Hvis aktivert, kan administrator velge hvilke grupper som kan dele filer. De aktuelle personene kan deretter dele filer og mapper med andre kontoer og grupper i Nextcloud. I tillegg, hvis administrator aktiverer delingslenke-funksjonen, kan en ekstern lenke brukes til å dele filer med andre personer utenfor Nextcloud. Administratorer kan også håndheve passord, utløpsdatoer og aktivere server-til-server-deling via delingslenker, samt deling fra mobile enheter.\nHvis du slår av funksjonen, fjernes delte filer og mapper på serveren for alle delingsmottakere, og også på synkroniseringsklienter og mobilapper. Mer informasjon er tilgjengelig i Nextcloud-dokumentasjonen.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Systemansvarlig har fremtvunget en standard utløpsdato med maksimum {days} dager.", "When should the request expire?" : "Når skal forespørselen utløpe?", - "Set a submission expirationDate" : "Angi en utløpsdato for en sending", + "Set a submission expiration date" : "Angi en utløpsdato for sending", "Expiration date" : "Utløpsdato", "Select a date" : "Velg en dato", - "Your administrator has enforced a password protection." : "Systemansvarlig har håndhevet en passordbeskyttelse.", + "Your administrator has enforced a {count} days expiration policy." : "Systemansvarlig har håndhevet en {count} dagers retningslinjer for utløp.", "What password should be used for the request?" : "Hvilket passord skal brukes for forespørselen?", "Set a password" : "Sett et passord", "Password" : "PassordP", "Enter a valid password" : "Angi et gyldig passord", "Generate a new password" : "Generer et nytt passord", + "Your administrator has enforced a password protection." : "Systemansvarlig har håndhevet en passordbeskyttelse.", "The request will expire on {date} at midnight and will be password protected." : "Forespørselen utløper {date} ved midnatt og vil være passordbeskyttet.", "The request will expire on {date} at midnight." : "Forespørselen utløper {date} ved midnatt.", "The request will be password protected." : "Forespørselen vil være passordbeskyttet.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Når den er opprettet, kan du dele lenken nedenfor for å tillate folk å laste opp filer til katalogen din.", + "You can now share the link below to allow people to upload files to your directory." : "Du kan nå dele lenken nedenfor for å tillate folk å laste opp filer til katalogen din.", "Share link" : "Share link", "Copy to clipboard" : "Kopiert til utklippstavlen", "Send link via email" : "Send lenke via e-post", @@ -156,31 +156,33 @@ OC.L10N.register( "Request subject" : "Be om emne", "Birthday party photos, History assignment…" : "Bursdagsfestbilder, Historieoppgave...", "Where should these files go?" : "Hvor skal disse filene gå?", - "The uploaded files are visible only to you unless you choose to share them." : "De opplastede filene er bare synlige for deg med mindre du velger å dele dem.", "Upload destination" : "Last opp destinasjon", "Select a destination" : "Velg en destinasjon", "Revert to default" : "Tilbakestill til standard", + "The uploaded files are visible only to you unless you choose to share them." : "De opplastede filene er bare synlige for deg med mindre du velger å dele dem.", "Add a note" : "Legg til et notat", "Note for recipient" : "Notat for mottaker", "Add a note to help people understand what you are requesting." : "Legg til et notat for å hjelpe andre med å forstå hva du ber om.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Du kan legge til lenker, dato eller annen informasjon som vil hjelpe mottakeren å forstå hva du ber om.", "Select" : "Velg", "Create a file request" : "Opprett en filforespørsel", "File request created" : "Filforespørsel opprettet", "Collect files from others even if they do not have an account." : "Samle filer fra andre selv om de ikke har en konto.", "To ensure you can receive files, verify you have enough storage available." : "For å sikre at du kan motta filer, må du kontrollere at du har nok lagringsplass tilgjengelig.", "File request" : "Filforespørsel", + "Previous step" : "Forrige trinn", "Cancel" : "Avbryt", "Cancel the file request creation" : "Avbryte opprettelsen av filforespørselen", - "Previous step" : "Forrige trinn", - "Continue" : "Fortsett", + "Close without sending emails" : "Lukk uten å sende e-post", "Close" : "Lukk", + "Continue" : "Fortsett", "Please select a folder, you cannot share the root directory." : "Velg en mappe, du kan ikke dele rotkatalogen.", - "File request created and emails sent" : "Filforespørsel opprettet og e-poster sendt", "Error creating the share: {errorMessage}" : "Feil ved opprettelse av delingen: {errorMessage}", "Error creating the share" : "Feil ved oppretting av deling", "Error sending emails: {errorMessage}" : "Feil ved sending av e-post: {errorMessage}", "Error sending emails" : "Feil ved sending av e-post", - "_Close and send email_::_Close and send {count} emails_" : ["Lukk og send e-post","Lukk og send {count} e-poster"], + "_Send email and close_::_Send {count} emails and close_" : ["Send e-post og lukk","Send {count} e-poster og lukk"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["Filforespørsel opprettet og e-post sendt","Filforespørsel opprettet og {count} e-poster sendt"], "Sharing" : "Deling", "Accept shares from other accounts and groups by default" : "Aksepter som standard delte ressurser fra andre kontoer og grupper", "Error while toggling options" : "Feil under veksling av alternativer", @@ -251,6 +253,11 @@ OC.L10N.register( "Deck board" : "Deck tavle", "ScienceMesh" : "ScienceMesh", "on {server}" : "på {server}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} delte en mappe med deg.", + "To upload files, you need to provide your name first." : "For å laste opp filer må du først oppgi navnet ditt.", + "Enter your name" : "Skriv inn navnet ditt", + "Submit name" : "Send inn navn", + "Upload files to {folder}" : "Last opp filer til {folder}", "Allow upload and editing" : "Tillatt opplasting og redigering", "Allow editing" : "Tillat redigering", "Upload only" : "Kun opplasting", @@ -303,7 +310,7 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "Deling av filen \"{path}\" er opphevd", "Folder \"{path}\" has been unshared" : "Deling av mappen \"{path}\" er opphevd", "Share {propertyName} saved" : "Deling {propertyName} er lagret", - "Create new file request" : "Opprett ny filforespørsel", + "Create file request" : "Opprett filforespørsel", "Shared by" : "Delt av", "Shared with" : "Delt med", "Password created successfully" : "Passord opprettet", @@ -338,6 +345,7 @@ OC.L10N.register( "Shares you have received but not approved will show up here" : "Delte ressurser du har mottatt, men ikke godkjent, vises her", "Share note" : "Delingsnotat", "Upload files to %s" : "Last opp filer til %s", + "%s shared a folder with you." : "%s delte en mappe med deg.", "Note" : "Melding", "Select or drop files" : "Velg eller slipp filer", "Uploading files" : "Laster opp filer", diff --git a/apps/files_sharing/l10n/nb.json b/apps/files_sharing/l10n/nb.json index 388a9d0dd11..667fddba54b 100644 --- a/apps/files_sharing/l10n/nb.json +++ b/apps/files_sharing/l10n/nb.json @@ -124,21 +124,21 @@ "Accept" : "Aksepter", "Decline" : "Avslå", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Denne applikasjonen lar personer dele filer i Nextcloud. Hvis aktivert, kan administrator velge hvilke grupper som kan dele filer. De aktuelle personene kan deretter dele filer og mapper med andre kontoer og grupper i Nextcloud. I tillegg, hvis administrator aktiverer delingslenke-funksjonen, kan en ekstern lenke brukes til å dele filer med andre personer utenfor Nextcloud. Administratorer kan også håndheve passord, utløpsdatoer og aktivere server-til-server-deling via delingslenker, samt deling fra mobile enheter.\nHvis du slår av funksjonen, fjernes delte filer og mapper på serveren for alle delingsmottakere, og også på synkroniseringsklienter og mobilapper. Mer informasjon er tilgjengelig i Nextcloud-dokumentasjonen.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Systemansvarlig har fremtvunget en standard utløpsdato med maksimum {days} dager.", "When should the request expire?" : "Når skal forespørselen utløpe?", - "Set a submission expirationDate" : "Angi en utløpsdato for en sending", + "Set a submission expiration date" : "Angi en utløpsdato for sending", "Expiration date" : "Utløpsdato", "Select a date" : "Velg en dato", - "Your administrator has enforced a password protection." : "Systemansvarlig har håndhevet en passordbeskyttelse.", + "Your administrator has enforced a {count} days expiration policy." : "Systemansvarlig har håndhevet en {count} dagers retningslinjer for utløp.", "What password should be used for the request?" : "Hvilket passord skal brukes for forespørselen?", "Set a password" : "Sett et passord", "Password" : "PassordP", "Enter a valid password" : "Angi et gyldig passord", "Generate a new password" : "Generer et nytt passord", + "Your administrator has enforced a password protection." : "Systemansvarlig har håndhevet en passordbeskyttelse.", "The request will expire on {date} at midnight and will be password protected." : "Forespørselen utløper {date} ved midnatt og vil være passordbeskyttet.", "The request will expire on {date} at midnight." : "Forespørselen utløper {date} ved midnatt.", "The request will be password protected." : "Forespørselen vil være passordbeskyttet.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Når den er opprettet, kan du dele lenken nedenfor for å tillate folk å laste opp filer til katalogen din.", + "You can now share the link below to allow people to upload files to your directory." : "Du kan nå dele lenken nedenfor for å tillate folk å laste opp filer til katalogen din.", "Share link" : "Share link", "Copy to clipboard" : "Kopiert til utklippstavlen", "Send link via email" : "Send lenke via e-post", @@ -154,31 +154,33 @@ "Request subject" : "Be om emne", "Birthday party photos, History assignment…" : "Bursdagsfestbilder, Historieoppgave...", "Where should these files go?" : "Hvor skal disse filene gå?", - "The uploaded files are visible only to you unless you choose to share them." : "De opplastede filene er bare synlige for deg med mindre du velger å dele dem.", "Upload destination" : "Last opp destinasjon", "Select a destination" : "Velg en destinasjon", "Revert to default" : "Tilbakestill til standard", + "The uploaded files are visible only to you unless you choose to share them." : "De opplastede filene er bare synlige for deg med mindre du velger å dele dem.", "Add a note" : "Legg til et notat", "Note for recipient" : "Notat for mottaker", "Add a note to help people understand what you are requesting." : "Legg til et notat for å hjelpe andre med å forstå hva du ber om.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Du kan legge til lenker, dato eller annen informasjon som vil hjelpe mottakeren å forstå hva du ber om.", "Select" : "Velg", "Create a file request" : "Opprett en filforespørsel", "File request created" : "Filforespørsel opprettet", "Collect files from others even if they do not have an account." : "Samle filer fra andre selv om de ikke har en konto.", "To ensure you can receive files, verify you have enough storage available." : "For å sikre at du kan motta filer, må du kontrollere at du har nok lagringsplass tilgjengelig.", "File request" : "Filforespørsel", + "Previous step" : "Forrige trinn", "Cancel" : "Avbryt", "Cancel the file request creation" : "Avbryte opprettelsen av filforespørselen", - "Previous step" : "Forrige trinn", - "Continue" : "Fortsett", + "Close without sending emails" : "Lukk uten å sende e-post", "Close" : "Lukk", + "Continue" : "Fortsett", "Please select a folder, you cannot share the root directory." : "Velg en mappe, du kan ikke dele rotkatalogen.", - "File request created and emails sent" : "Filforespørsel opprettet og e-poster sendt", "Error creating the share: {errorMessage}" : "Feil ved opprettelse av delingen: {errorMessage}", "Error creating the share" : "Feil ved oppretting av deling", "Error sending emails: {errorMessage}" : "Feil ved sending av e-post: {errorMessage}", "Error sending emails" : "Feil ved sending av e-post", - "_Close and send email_::_Close and send {count} emails_" : ["Lukk og send e-post","Lukk og send {count} e-poster"], + "_Send email and close_::_Send {count} emails and close_" : ["Send e-post og lukk","Send {count} e-poster og lukk"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["Filforespørsel opprettet og e-post sendt","Filforespørsel opprettet og {count} e-poster sendt"], "Sharing" : "Deling", "Accept shares from other accounts and groups by default" : "Aksepter som standard delte ressurser fra andre kontoer og grupper", "Error while toggling options" : "Feil under veksling av alternativer", @@ -249,6 +251,11 @@ "Deck board" : "Deck tavle", "ScienceMesh" : "ScienceMesh", "on {server}" : "på {server}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} delte en mappe med deg.", + "To upload files, you need to provide your name first." : "For å laste opp filer må du først oppgi navnet ditt.", + "Enter your name" : "Skriv inn navnet ditt", + "Submit name" : "Send inn navn", + "Upload files to {folder}" : "Last opp filer til {folder}", "Allow upload and editing" : "Tillatt opplasting og redigering", "Allow editing" : "Tillat redigering", "Upload only" : "Kun opplasting", @@ -301,7 +308,7 @@ "File \"{path}\" has been unshared" : "Deling av filen \"{path}\" er opphevd", "Folder \"{path}\" has been unshared" : "Deling av mappen \"{path}\" er opphevd", "Share {propertyName} saved" : "Deling {propertyName} er lagret", - "Create new file request" : "Opprett ny filforespørsel", + "Create file request" : "Opprett filforespørsel", "Shared by" : "Delt av", "Shared with" : "Delt med", "Password created successfully" : "Passord opprettet", @@ -336,6 +343,7 @@ "Shares you have received but not approved will show up here" : "Delte ressurser du har mottatt, men ikke godkjent, vises her", "Share note" : "Delingsnotat", "Upload files to %s" : "Last opp filer til %s", + "%s shared a folder with you." : "%s delte en mappe med deg.", "Note" : "Melding", "Select or drop files" : "Velg eller slipp filer", "Uploading files" : "Laster opp filer", diff --git a/apps/files_sharing/l10n/nl.js b/apps/files_sharing/l10n/nl.js index c9c1955fe1c..e078a82610d 100644 --- a/apps/files_sharing/l10n/nl.js +++ b/apps/files_sharing/l10n/nl.js @@ -119,8 +119,8 @@ OC.L10N.register( "Link copied to clipboard" : "Link gekopieerd naar het klembord", "Select" : "Selecteer", "Cancel" : "Annuleren", - "Continue" : "Doorgaan", "Close" : "Sluit", + "Continue" : "Doorgaan", "Error creating the share: {errorMessage}" : "Fout bij aanmaken share: {errorMessage}", "Error creating the share" : "Fout tijdens aanmaken share", "Sharing" : "Delen", @@ -176,6 +176,7 @@ OC.L10N.register( "Talk conversation" : "Talk gesprek", "Deck board" : "Deck board", "on {server}" : "op {server}", + "Enter your name" : "Geef je naam op", "Allow upload and editing" : "Uploaden en bewerken toestaan", "Allow editing" : "Bewerken toestaan", "Advanced settings" : "Geavanceerde instellingen", diff --git a/apps/files_sharing/l10n/nl.json b/apps/files_sharing/l10n/nl.json index c2c20aa9e6e..eac62bd228d 100644 --- a/apps/files_sharing/l10n/nl.json +++ b/apps/files_sharing/l10n/nl.json @@ -117,8 +117,8 @@ "Link copied to clipboard" : "Link gekopieerd naar het klembord", "Select" : "Selecteer", "Cancel" : "Annuleren", - "Continue" : "Doorgaan", "Close" : "Sluit", + "Continue" : "Doorgaan", "Error creating the share: {errorMessage}" : "Fout bij aanmaken share: {errorMessage}", "Error creating the share" : "Fout tijdens aanmaken share", "Sharing" : "Delen", @@ -174,6 +174,7 @@ "Talk conversation" : "Talk gesprek", "Deck board" : "Deck board", "on {server}" : "op {server}", + "Enter your name" : "Geef je naam op", "Allow upload and editing" : "Uploaden en bewerken toestaan", "Allow editing" : "Bewerken toestaan", "Advanced settings" : "Geavanceerde instellingen", diff --git a/apps/files_sharing/l10n/pl.js b/apps/files_sharing/l10n/pl.js index ab0baaba7c8..94a8922a6da 100644 --- a/apps/files_sharing/l10n/pl.js +++ b/apps/files_sharing/l10n/pl.js @@ -125,8 +125,8 @@ OC.L10N.register( "Link copied to clipboard" : "Link skopiowany do schowka", "Select" : "Wybierz", "Cancel" : "Anuluj", - "Continue" : "Kontynuuj", "Close" : "Zamknij", + "Continue" : "Kontynuuj", "Error creating the share: {errorMessage}" : "Błąd podczas tworzenia udostępnienia: {errorMessage}", "Error creating the share" : "Błąd podczas tworzenia udostępnienia", "Sharing" : "Udostępnianie", @@ -193,6 +193,8 @@ OC.L10N.register( "Deck board" : "Tablica Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "na {server}", + "Enter your name" : "Wpisz swoją nazwę", + "Submit name" : "Wyślij nazwę", "Allow upload and editing" : "Zezwalaj na wysyłanie i edytowanie", "Allow editing" : "Zezwalaj na edytowanie", "Upload only" : "Tylko wyślij", diff --git a/apps/files_sharing/l10n/pl.json b/apps/files_sharing/l10n/pl.json index ebdacf90762..e832cc97a44 100644 --- a/apps/files_sharing/l10n/pl.json +++ b/apps/files_sharing/l10n/pl.json @@ -123,8 +123,8 @@ "Link copied to clipboard" : "Link skopiowany do schowka", "Select" : "Wybierz", "Cancel" : "Anuluj", - "Continue" : "Kontynuuj", "Close" : "Zamknij", + "Continue" : "Kontynuuj", "Error creating the share: {errorMessage}" : "Błąd podczas tworzenia udostępnienia: {errorMessage}", "Error creating the share" : "Błąd podczas tworzenia udostępnienia", "Sharing" : "Udostępnianie", @@ -191,6 +191,8 @@ "Deck board" : "Tablica Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "na {server}", + "Enter your name" : "Wpisz swoją nazwę", + "Submit name" : "Wyślij nazwę", "Allow upload and editing" : "Zezwalaj na wysyłanie i edytowanie", "Allow editing" : "Zezwalaj na edytowanie", "Upload only" : "Tylko wyślij", diff --git a/apps/files_sharing/l10n/pt_BR.js b/apps/files_sharing/l10n/pt_BR.js index a824f287a69..916e51c9976 100644 --- a/apps/files_sharing/l10n/pt_BR.js +++ b/apps/files_sharing/l10n/pt_BR.js @@ -126,21 +126,18 @@ OC.L10N.register( "Accept" : "Aceitar", "Decline" : "Recusar", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Este aplicativo permite que as pessoas compartilhem arquivos dentro do Nextcloud. Se ativado, o administrador pode escolher quais grupos podem compartilhar arquivos. As pessoas aplicáveis podem então compartilhar arquivos e pastas com outras contas e grupos dentro do Nextcloud. Além disso, se o administrador ativar o recurso de compartilhamento de link, um link externo poderá ser usado para compartilhar arquivos com outras pessoas fora do Nextcloud. Os administradores também podem impor senhas, datas de expiração e permitir o compartilhamento de servidor para servidor por meio de links de compartilhamento, bem como compartilhamento de dispositivos móveis. \nDesativar o recurso remove arquivos e pastas compartilhados no servidor para todos os destinatários de compartilhamento e também nos clientes de sincronização e aplicativos móveis. Mais informações estão disponíveis na documentação do Nextcloud.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Seu administrador impôs uma data de expiração padrão com no máximo {days} dias.", "When should the request expire?" : "Quando a solicitação deve expirar?", - "Set a submission expirationDate" : "Defina uma data de expiração para envio", "Expiration date" : "Expiração", "Select a date" : "Selecione uma data", - "Your administrator has enforced a password protection." : "Seu administrador aplicou uma proteção por senha.", "What password should be used for the request?" : "Qual senha deve ser usada para a solicitação?", "Set a password" : "Definir uma senha", "Password" : "Senha", "Enter a valid password" : "Digite uma senha válida", "Generate a new password" : "Gerar uma nova senha", + "Your administrator has enforced a password protection." : "Seu administrador aplicou uma proteção por senha.", "The request will expire on {date} at midnight and will be password protected." : "A solicitação expirará em {date} à meia-noite e será protegida por senha.", "The request will expire on {date} at midnight." : "A solicitação expirará em {date} à meia-noite.", "The request will be password protected." : "A solicitação será protegida por senha.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Depois de criado, você pode compartilhar o link abaixo para permitir que as pessoas carreguem arquivos em seu diretório.", "Share link" : "Link de compartilhamento", "Copy to clipboard" : "Copiar para área de transferência", "Send link via email" : "Enviar link por email", @@ -156,10 +153,10 @@ OC.L10N.register( "Request subject" : "Assunto da solicitação", "Birthday party photos, History assignment…" : "Fotos de festa de aniversário, trabalho de história…", "Where should these files go?" : "Para onde esses arquivos devem ir?", - "The uploaded files are visible only to you unless you choose to share them." : "Os arquivos enviados ficam visíveis apenas para você, a menos que você opte por compartilhá-los.", "Upload destination" : "Destino do upload", "Select a destination" : "Selecione um destino", "Revert to default" : "Reverter para o padrão", + "The uploaded files are visible only to you unless you choose to share them." : "Os arquivos enviados ficam visíveis apenas para você, a menos que você opte por compartilhá-los.", "Add a note" : "Adicione uma anotação", "Note for recipient" : "Nota para o destinatário", "Add a note to help people understand what you are requesting." : "Adicione uma nota para ajudar as pessoas a entenderem o que você está solicitando.", @@ -169,18 +166,16 @@ OC.L10N.register( "Collect files from others even if they do not have an account." : "Colete arquivos de outras pessoas, mesmo que elas não tenham uma conta.", "To ensure you can receive files, verify you have enough storage available." : "Para garantir que você possa receber arquivos, verifique se você tem armazenamento suficiente disponível.", "File request" : "Solicitação de arquivo", + "Previous step" : "Passo anterior", "Cancel" : "Cancelar", "Cancel the file request creation" : "Cancelar a criação da solicitação de arquivo", - "Previous step" : "Passo anterior", - "Continue" : "Continuar", "Close" : "Fechar", + "Continue" : "Continuar", "Please select a folder, you cannot share the root directory." : "Selecione uma pasta, você não pode compartilhar o diretório raiz.", - "File request created and emails sent" : "Solicitação de arquivo criada e e-mails enviados", "Error creating the share: {errorMessage}" : "Erro ao criar o compartilhamento: {errorMessage}", "Error creating the share" : "Erro ao criar o compartilhamento", "Error sending emails: {errorMessage}" : "Erro ao enviar e-mails:{errorMessage}", "Error sending emails" : "Erro ao enviar e-mails", - "_Close and send email_::_Close and send {count} emails_" : ["Fechar e enviar {count} e-mails","Fechar e enviar {count} e-mails","Fechar e enviar {count} e-mails"], "Sharing" : "Compartilhando", "Accept shares from other accounts and groups by default" : "Aceitar compartilhamentos de outras contas e grupos por padrão", "Error while toggling options" : "Erro ao alternar opções", @@ -251,6 +246,8 @@ OC.L10N.register( "Deck board" : "Painel de deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "em {server}", + "Enter your name" : "Digite seu nome", + "Submit name" : "Enviar nome", "Allow upload and editing" : "Permitir envio e edição", "Allow editing" : "Permitir edição", "Upload only" : "Fazer upload apenas", @@ -303,7 +300,6 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "O arquivo \"{path}\" não foi compartilhado", "Folder \"{path}\" has been unshared" : "A pasta \"{path}\" foi descompartilhada", "Share {propertyName} saved" : "Compartilhe {propertyName} salvo", - "Create new file request" : "Criar nova solicitação de arquivo", "Shared by" : "Compartilhado por", "Shared with" : "Compartilhado com", "Password created successfully" : "Senha criada com sucesso", diff --git a/apps/files_sharing/l10n/pt_BR.json b/apps/files_sharing/l10n/pt_BR.json index eaf386edfa3..b99a339c6d6 100644 --- a/apps/files_sharing/l10n/pt_BR.json +++ b/apps/files_sharing/l10n/pt_BR.json @@ -124,21 +124,18 @@ "Accept" : "Aceitar", "Decline" : "Recusar", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Este aplicativo permite que as pessoas compartilhem arquivos dentro do Nextcloud. Se ativado, o administrador pode escolher quais grupos podem compartilhar arquivos. As pessoas aplicáveis podem então compartilhar arquivos e pastas com outras contas e grupos dentro do Nextcloud. Além disso, se o administrador ativar o recurso de compartilhamento de link, um link externo poderá ser usado para compartilhar arquivos com outras pessoas fora do Nextcloud. Os administradores também podem impor senhas, datas de expiração e permitir o compartilhamento de servidor para servidor por meio de links de compartilhamento, bem como compartilhamento de dispositivos móveis. \nDesativar o recurso remove arquivos e pastas compartilhados no servidor para todos os destinatários de compartilhamento e também nos clientes de sincronização e aplicativos móveis. Mais informações estão disponíveis na documentação do Nextcloud.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Seu administrador impôs uma data de expiração padrão com no máximo {days} dias.", "When should the request expire?" : "Quando a solicitação deve expirar?", - "Set a submission expirationDate" : "Defina uma data de expiração para envio", "Expiration date" : "Expiração", "Select a date" : "Selecione uma data", - "Your administrator has enforced a password protection." : "Seu administrador aplicou uma proteção por senha.", "What password should be used for the request?" : "Qual senha deve ser usada para a solicitação?", "Set a password" : "Definir uma senha", "Password" : "Senha", "Enter a valid password" : "Digite uma senha válida", "Generate a new password" : "Gerar uma nova senha", + "Your administrator has enforced a password protection." : "Seu administrador aplicou uma proteção por senha.", "The request will expire on {date} at midnight and will be password protected." : "A solicitação expirará em {date} à meia-noite e será protegida por senha.", "The request will expire on {date} at midnight." : "A solicitação expirará em {date} à meia-noite.", "The request will be password protected." : "A solicitação será protegida por senha.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Depois de criado, você pode compartilhar o link abaixo para permitir que as pessoas carreguem arquivos em seu diretório.", "Share link" : "Link de compartilhamento", "Copy to clipboard" : "Copiar para área de transferência", "Send link via email" : "Enviar link por email", @@ -154,10 +151,10 @@ "Request subject" : "Assunto da solicitação", "Birthday party photos, History assignment…" : "Fotos de festa de aniversário, trabalho de história…", "Where should these files go?" : "Para onde esses arquivos devem ir?", - "The uploaded files are visible only to you unless you choose to share them." : "Os arquivos enviados ficam visíveis apenas para você, a menos que você opte por compartilhá-los.", "Upload destination" : "Destino do upload", "Select a destination" : "Selecione um destino", "Revert to default" : "Reverter para o padrão", + "The uploaded files are visible only to you unless you choose to share them." : "Os arquivos enviados ficam visíveis apenas para você, a menos que você opte por compartilhá-los.", "Add a note" : "Adicione uma anotação", "Note for recipient" : "Nota para o destinatário", "Add a note to help people understand what you are requesting." : "Adicione uma nota para ajudar as pessoas a entenderem o que você está solicitando.", @@ -167,18 +164,16 @@ "Collect files from others even if they do not have an account." : "Colete arquivos de outras pessoas, mesmo que elas não tenham uma conta.", "To ensure you can receive files, verify you have enough storage available." : "Para garantir que você possa receber arquivos, verifique se você tem armazenamento suficiente disponível.", "File request" : "Solicitação de arquivo", + "Previous step" : "Passo anterior", "Cancel" : "Cancelar", "Cancel the file request creation" : "Cancelar a criação da solicitação de arquivo", - "Previous step" : "Passo anterior", - "Continue" : "Continuar", "Close" : "Fechar", + "Continue" : "Continuar", "Please select a folder, you cannot share the root directory." : "Selecione uma pasta, você não pode compartilhar o diretório raiz.", - "File request created and emails sent" : "Solicitação de arquivo criada e e-mails enviados", "Error creating the share: {errorMessage}" : "Erro ao criar o compartilhamento: {errorMessage}", "Error creating the share" : "Erro ao criar o compartilhamento", "Error sending emails: {errorMessage}" : "Erro ao enviar e-mails:{errorMessage}", "Error sending emails" : "Erro ao enviar e-mails", - "_Close and send email_::_Close and send {count} emails_" : ["Fechar e enviar {count} e-mails","Fechar e enviar {count} e-mails","Fechar e enviar {count} e-mails"], "Sharing" : "Compartilhando", "Accept shares from other accounts and groups by default" : "Aceitar compartilhamentos de outras contas e grupos por padrão", "Error while toggling options" : "Erro ao alternar opções", @@ -249,6 +244,8 @@ "Deck board" : "Painel de deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "em {server}", + "Enter your name" : "Digite seu nome", + "Submit name" : "Enviar nome", "Allow upload and editing" : "Permitir envio e edição", "Allow editing" : "Permitir edição", "Upload only" : "Fazer upload apenas", @@ -301,7 +298,6 @@ "File \"{path}\" has been unshared" : "O arquivo \"{path}\" não foi compartilhado", "Folder \"{path}\" has been unshared" : "A pasta \"{path}\" foi descompartilhada", "Share {propertyName} saved" : "Compartilhe {propertyName} salvo", - "Create new file request" : "Criar nova solicitação de arquivo", "Shared by" : "Compartilhado por", "Shared with" : "Compartilhado com", "Password created successfully" : "Senha criada com sucesso", diff --git a/apps/files_sharing/l10n/ro.js b/apps/files_sharing/l10n/ro.js index 94642d3a8c2..2633bf162ed 100644 --- a/apps/files_sharing/l10n/ro.js +++ b/apps/files_sharing/l10n/ro.js @@ -119,8 +119,8 @@ OC.L10N.register( "Send link via email" : "Trimite link via email", "Select" : "Selectează", "Cancel" : "Anulează", - "Continue" : "Continuă", "Close" : "Închide", + "Continue" : "Continuă", "Error creating the share" : "Eroare la crearea partajării", "Sharing" : "Partajare", "Error while toggling options" : "Eroare la comutarea opțiunilor", @@ -154,6 +154,7 @@ OC.L10N.register( "Email" : "E-mail", "Talk conversation" : "Conversație Talk", "Deck board" : "Panou Deck", + "Enter your name" : "Introduceți numele", "Allow upload and editing" : "Permite încărcarea și editarea", "Allow editing" : "Permite editarea", "Advanced settings" : "Setări avansate", diff --git a/apps/files_sharing/l10n/ro.json b/apps/files_sharing/l10n/ro.json index 699c6d410aa..55b475d1d59 100644 --- a/apps/files_sharing/l10n/ro.json +++ b/apps/files_sharing/l10n/ro.json @@ -117,8 +117,8 @@ "Send link via email" : "Trimite link via email", "Select" : "Selectează", "Cancel" : "Anulează", - "Continue" : "Continuă", "Close" : "Închide", + "Continue" : "Continuă", "Error creating the share" : "Eroare la crearea partajării", "Sharing" : "Partajare", "Error while toggling options" : "Eroare la comutarea opțiunilor", @@ -152,6 +152,7 @@ "Email" : "E-mail", "Talk conversation" : "Conversație Talk", "Deck board" : "Panou Deck", + "Enter your name" : "Introduceți numele", "Allow upload and editing" : "Permite încărcarea și editarea", "Allow editing" : "Permite editarea", "Advanced settings" : "Setări avansate", diff --git a/apps/files_sharing/l10n/ru.js b/apps/files_sharing/l10n/ru.js index 396922e80cf..634c08b2d02 100644 --- a/apps/files_sharing/l10n/ru.js +++ b/apps/files_sharing/l10n/ru.js @@ -122,8 +122,8 @@ OC.L10N.register( "Link copied to clipboard" : "Ссылка скопирована в буфер обмена", "Select" : "Выбрать", "Cancel" : "Отменить", - "Continue" : "Продолжить", "Close" : "Закрыть", + "Continue" : "Продолжить", "Error creating the share: {errorMessage}" : "Не удалось создать общий ресурс: {errorMessage}", "Error creating the share" : "Ошибка создания общего доступа", "Sharing" : "Общий доступ", @@ -188,6 +188,7 @@ OC.L10N.register( "Deck board" : "Доска", "ScienceMesh" : "ScienceMesh", "on {server}" : "на {server}", + "Enter your name" : "Введите своё имя", "Allow upload and editing" : "Разрешить приём и редактирование", "Allow editing" : "Разрешить редактирование", "Upload only" : "Только загружать", diff --git a/apps/files_sharing/l10n/ru.json b/apps/files_sharing/l10n/ru.json index 3f4af3f9b1f..18a728ec4da 100644 --- a/apps/files_sharing/l10n/ru.json +++ b/apps/files_sharing/l10n/ru.json @@ -120,8 +120,8 @@ "Link copied to clipboard" : "Ссылка скопирована в буфер обмена", "Select" : "Выбрать", "Cancel" : "Отменить", - "Continue" : "Продолжить", "Close" : "Закрыть", + "Continue" : "Продолжить", "Error creating the share: {errorMessage}" : "Не удалось создать общий ресурс: {errorMessage}", "Error creating the share" : "Ошибка создания общего доступа", "Sharing" : "Общий доступ", @@ -186,6 +186,7 @@ "Deck board" : "Доска", "ScienceMesh" : "ScienceMesh", "on {server}" : "на {server}", + "Enter your name" : "Введите своё имя", "Allow upload and editing" : "Разрешить приём и редактирование", "Allow editing" : "Разрешить редактирование", "Upload only" : "Только загружать", diff --git a/apps/files_sharing/l10n/sc.js b/apps/files_sharing/l10n/sc.js index 99d7d5cba0c..8c086df821d 100644 --- a/apps/files_sharing/l10n/sc.js +++ b/apps/files_sharing/l10n/sc.js @@ -168,6 +168,7 @@ OC.L10N.register( "Talk conversation" : "Resonada de Talk", "Deck board" : "Tabella in Deck", "on {server}" : "in {server}", + "Enter your name" : "Inserta•nche su nùmene tuo", "Allow upload and editing" : "Permite carrigamentu e modìficas", "Allow editing" : "Cunsenti sa modìfica", "Advanced settings" : "Cunfiguratziones avantzadas", diff --git a/apps/files_sharing/l10n/sc.json b/apps/files_sharing/l10n/sc.json index 18f3c638050..969133a27db 100644 --- a/apps/files_sharing/l10n/sc.json +++ b/apps/files_sharing/l10n/sc.json @@ -166,6 +166,7 @@ "Talk conversation" : "Resonada de Talk", "Deck board" : "Tabella in Deck", "on {server}" : "in {server}", + "Enter your name" : "Inserta•nche su nùmene tuo", "Allow upload and editing" : "Permite carrigamentu e modìficas", "Allow editing" : "Cunsenti sa modìfica", "Advanced settings" : "Cunfiguratziones avantzadas", diff --git a/apps/files_sharing/l10n/sk.js b/apps/files_sharing/l10n/sk.js index b1555538fcf..9bcd970b906 100644 --- a/apps/files_sharing/l10n/sk.js +++ b/apps/files_sharing/l10n/sk.js @@ -124,8 +124,8 @@ OC.L10N.register( "Link copied to clipboard" : "Odkaz bol skopírovaný do schránky", "Select" : "Vybrať", "Cancel" : "Zrušiť", - "Continue" : "Pokračovať", "Close" : "Zatvoriť", + "Continue" : "Pokračovať", "Error creating the share: {errorMessage}" : "Chyba pri vytváraní zdieľania: {errorMessage}", "Error creating the share" : "Chyba pri vytváraní zdieľania", "Sharing" : "Sprístupnenie", @@ -196,6 +196,7 @@ OC.L10N.register( "Deck board" : "Palubná doska", "ScienceMesh" : "ScienceMesh", "on {server}" : "na {server}", + "Enter your name" : "Zadajte svoje meno", "Allow upload and editing" : "Povoliť nahrávanie a úpravy", "Allow editing" : "Povoliť úpravy", "Upload only" : "Iba nahrávať", diff --git a/apps/files_sharing/l10n/sk.json b/apps/files_sharing/l10n/sk.json index fa6715a07f7..6a1ca3ea571 100644 --- a/apps/files_sharing/l10n/sk.json +++ b/apps/files_sharing/l10n/sk.json @@ -122,8 +122,8 @@ "Link copied to clipboard" : "Odkaz bol skopírovaný do schránky", "Select" : "Vybrať", "Cancel" : "Zrušiť", - "Continue" : "Pokračovať", "Close" : "Zatvoriť", + "Continue" : "Pokračovať", "Error creating the share: {errorMessage}" : "Chyba pri vytváraní zdieľania: {errorMessage}", "Error creating the share" : "Chyba pri vytváraní zdieľania", "Sharing" : "Sprístupnenie", @@ -194,6 +194,7 @@ "Deck board" : "Palubná doska", "ScienceMesh" : "ScienceMesh", "on {server}" : "na {server}", + "Enter your name" : "Zadajte svoje meno", "Allow upload and editing" : "Povoliť nahrávanie a úpravy", "Allow editing" : "Povoliť úpravy", "Upload only" : "Iba nahrávať", diff --git a/apps/files_sharing/l10n/sl.js b/apps/files_sharing/l10n/sl.js index 25b51e59678..882dd52be3b 100644 --- a/apps/files_sharing/l10n/sl.js +++ b/apps/files_sharing/l10n/sl.js @@ -117,11 +117,11 @@ OC.L10N.register( "Decline" : "Zavrni", "Expiration date" : "Datum preteka", "Select a date" : "Izbor datuma", - "Your administrator has enforced a password protection." : "Skrbnik zahteva uporabo zaščite z geslom.", "Set a password" : "Nastavi geslo", "Password" : "Geslo", "Enter a valid password" : "Vpisati je treba veljavno geslo", "Generate a new password" : "Ustvari novo geslo", + "Your administrator has enforced a password protection." : "Skrbnik zahteva uporabo zaščite z geslom.", "Share link" : "Povezava za souporabo", "Copy to clipboard" : "Kopiraj v odložišče", "Send link via email" : "Pošlji povezavo po elektronski pošti", @@ -131,24 +131,23 @@ OC.L10N.register( "Invalid email address" : "Vpisan je neveljaven elektronski naslov", "_1 email address already added_::_{count} email addresses already added_" : ["{count} elektronski naslov je že dodan","{count} elektronska naslova sta že dodana","{count} elektronski naslovi so že dodani","{count} elektronskih naslovov je že dodanih"], "Where should these files go?" : "Kam želite poslati te datoteke?", - "The uploaded files are visible only to you unless you choose to share them." : "V oblak poslane datoteke so vidne le vam, dokler jih ne omogočite v souporabo.", "Upload destination" : "Mesto pošiljanja", "Select a destination" : "Izbor cilja", "Revert to default" : "Povrni na privzeto", + "The uploaded files are visible only to you unless you choose to share them." : "V oblak poslane datoteke so vidne le vam, dokler jih ne omogočite v souporabo.", "Add a note" : "Dodaj opombo", "Note for recipient" : "Opomba za prejemnika", "Add a note to help people understand what you are requesting." : "Dodajte opombo, ki bo prejemnikom pomagala razumeti, kaj od njih zahtevate.", "Select" : "Izbor", "Create a file request" : "Ustvari zahtevo za datoteko", "File request created" : "Zahteva za datoteko je ustvarjena", - "Cancel" : "Prekliči", "Previous step" : "Predhodni korak", - "Continue" : "Nadaljuj", + "Cancel" : "Prekliči", "Close" : "Zapri", + "Continue" : "Nadaljuj", "Error creating the share: {errorMessage}" : "Napaka pri ustvarjanju mesta souporabe: {errorMessage}", "Error creating the share" : "Napaka ustvarjanja mesta souporabe", "Error sending emails" : "Prišlo je do napake med pošiljanjem elektronskih sporočil", - "_Close and send email_::_Close and send {count} emails_" : ["Zapri in pošlji {count} elektronsko sporočilo","Zapri in pošlji {count}elektronski sporočili","Zapri in pošlji {count} elektronska sporočila","Zapri in pošlji {count} elektronskih sporočil"], "Sharing" : "Souporaba", "Error while toggling options" : "Prišlo je do napake med preklapljanjem možnosti", "Set default folder for accepted shares" : "Izbor privzete mape za sprejemanje map v souporabi", @@ -211,6 +210,7 @@ OC.L10N.register( "Deck board" : "Zbirka Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "na strežniku {server}", + "Enter your name" : "Vpišite ime", "Allow upload and editing" : "Dovoli pošiljanje in urejanje", "Allow editing" : "Dovoli urejanje", "Upload only" : "Le pošiljanje", diff --git a/apps/files_sharing/l10n/sl.json b/apps/files_sharing/l10n/sl.json index 767b567773e..1f4564ec558 100644 --- a/apps/files_sharing/l10n/sl.json +++ b/apps/files_sharing/l10n/sl.json @@ -115,11 +115,11 @@ "Decline" : "Zavrni", "Expiration date" : "Datum preteka", "Select a date" : "Izbor datuma", - "Your administrator has enforced a password protection." : "Skrbnik zahteva uporabo zaščite z geslom.", "Set a password" : "Nastavi geslo", "Password" : "Geslo", "Enter a valid password" : "Vpisati je treba veljavno geslo", "Generate a new password" : "Ustvari novo geslo", + "Your administrator has enforced a password protection." : "Skrbnik zahteva uporabo zaščite z geslom.", "Share link" : "Povezava za souporabo", "Copy to clipboard" : "Kopiraj v odložišče", "Send link via email" : "Pošlji povezavo po elektronski pošti", @@ -129,24 +129,23 @@ "Invalid email address" : "Vpisan je neveljaven elektronski naslov", "_1 email address already added_::_{count} email addresses already added_" : ["{count} elektronski naslov je že dodan","{count} elektronska naslova sta že dodana","{count} elektronski naslovi so že dodani","{count} elektronskih naslovov je že dodanih"], "Where should these files go?" : "Kam želite poslati te datoteke?", - "The uploaded files are visible only to you unless you choose to share them." : "V oblak poslane datoteke so vidne le vam, dokler jih ne omogočite v souporabo.", "Upload destination" : "Mesto pošiljanja", "Select a destination" : "Izbor cilja", "Revert to default" : "Povrni na privzeto", + "The uploaded files are visible only to you unless you choose to share them." : "V oblak poslane datoteke so vidne le vam, dokler jih ne omogočite v souporabo.", "Add a note" : "Dodaj opombo", "Note for recipient" : "Opomba za prejemnika", "Add a note to help people understand what you are requesting." : "Dodajte opombo, ki bo prejemnikom pomagala razumeti, kaj od njih zahtevate.", "Select" : "Izbor", "Create a file request" : "Ustvari zahtevo za datoteko", "File request created" : "Zahteva za datoteko je ustvarjena", - "Cancel" : "Prekliči", "Previous step" : "Predhodni korak", - "Continue" : "Nadaljuj", + "Cancel" : "Prekliči", "Close" : "Zapri", + "Continue" : "Nadaljuj", "Error creating the share: {errorMessage}" : "Napaka pri ustvarjanju mesta souporabe: {errorMessage}", "Error creating the share" : "Napaka ustvarjanja mesta souporabe", "Error sending emails" : "Prišlo je do napake med pošiljanjem elektronskih sporočil", - "_Close and send email_::_Close and send {count} emails_" : ["Zapri in pošlji {count} elektronsko sporočilo","Zapri in pošlji {count}elektronski sporočili","Zapri in pošlji {count} elektronska sporočila","Zapri in pošlji {count} elektronskih sporočil"], "Sharing" : "Souporaba", "Error while toggling options" : "Prišlo je do napake med preklapljanjem možnosti", "Set default folder for accepted shares" : "Izbor privzete mape za sprejemanje map v souporabi", @@ -209,6 +208,7 @@ "Deck board" : "Zbirka Deck", "ScienceMesh" : "ScienceMesh", "on {server}" : "na strežniku {server}", + "Enter your name" : "Vpišite ime", "Allow upload and editing" : "Dovoli pošiljanje in urejanje", "Allow editing" : "Dovoli urejanje", "Upload only" : "Le pošiljanje", diff --git a/apps/files_sharing/l10n/sr.js b/apps/files_sharing/l10n/sr.js index c92d877ed6e..3094fbfc9a9 100644 --- a/apps/files_sharing/l10n/sr.js +++ b/apps/files_sharing/l10n/sr.js @@ -126,21 +126,18 @@ OC.L10N.register( "Accept" : "Прихвати", "Decline" : "Одбиј", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Ова апликација омогућава људима да деле фајлове унутар Nextcloud инстанце. Када се укључи, админ може да одабере које групе могу да деле фајлове. Ти људи затим могу да деле фолдере и фајлове са осталим налозима и групама унутар Nextcloud инстанце. Уз то, ако админ укључи и могућност дељења линка, за дељење са корисницима ван Nextcloud инстанце може да се употреби спољни линк. Админи такође могу да форсирају лозинке, датум истека и да омогуће дељење између сервера преко линкова дељења, као и дељење са мобилних уређаја.\nИскључивањем ове могућности искључује се дељење фајлова и фолдера и на серверу са свим примаоцима дељења, као и на клијентима за синхорнизацију и мобилним апликацијама. Више информација можете наћи у Nextcloud документацији.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Ваш администратор је поставио обавезни подразумевани датум истека са максимумом од {days} дана.", "When should the request expire?" : "Када би захтев требало да истекне?", - "Set a submission expirationDate" : "Постави expirationDate за поднесак", "Expiration date" : "Датум истека", "Select a date" : "Изаберите датум", - "Your administrator has enforced a password protection." : "Ваш администратор је поставио обавезну заштиту лозинком", "What password should be used for the request?" : "Која лозинка би требало да се употреби за захтев?", "Set a password" : "Постави лозинку", "Password" : "Лозинка", "Enter a valid password" : "Унесите исправну лозинку", "Generate a new password" : "Генериши нову лозинку", + "Your administrator has enforced a password protection." : "Ваш администратор је поставио обавезну заштиту лозинком", "The request will expire on {date} at midnight and will be password protected." : "Захтев ће истећи дана {date} у поноћ и биће заштићен лозинком.", "The request will expire on {date} at midnight." : "Захтев ће истећи дана {date} у поноћ.", "The request will be password protected." : "Захтев ће бити заштићен лозинком.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Када се креира, линк приказан испод можете да поделите и тако омогућите људима да отпремају фајлове у ваш директоријум.", "Share link" : "Веза дељења", "Copy to clipboard" : "Копирај у оставу", "Send link via email" : "Пошаљи линк и-мејлом", @@ -156,10 +153,10 @@ OC.L10N.register( "Request subject" : "Тема захтева", "Birthday party photos, History assignment…" : "Слике за рођенданске забаве, рад из историје…", "Where should these files go?" : "Где би ови фајлови требало да иду?", - "The uploaded files are visible only to you unless you choose to share them." : "Отпремљене фајлове можете да видите само ви, осим ако не одлучите да их поделите.", "Upload destination" : "Одредиште отпремања", "Select a destination" : "Изаберите одредиште", "Revert to default" : "Ресетуј на подразумевано", + "The uploaded files are visible only to you unless you choose to share them." : "Отпремљене фајлове можете да видите само ви, осим ако не одлучите да их поделите.", "Add a note" : "Додај напомену", "Note for recipient" : "Напомена за примаоца", "Add a note to help people understand what you are requesting." : "Додајте напомену како би људи схватили шта захтевате.", @@ -169,18 +166,16 @@ OC.L10N.register( "Collect files from others even if they do not have an account." : "Прикупи фајлове од осталих чак и ако немају налог.", "To ensure you can receive files, verify you have enough storage available." : "Да би били сигурни да можете примити фајлове, проверите да ли имате довољно празног простора.", "File request" : "Захтев за фајл", + "Previous step" : "Претходни корак", "Cancel" : "Одустани", "Cancel the file request creation" : "Откажи креирање захтева за фајл", - "Previous step" : "Претходни корак", - "Continue" : "Настави", "Close" : "Затвори", + "Continue" : "Настави", "Please select a folder, you cannot share the root directory." : "Молимо вас да изаберете фолдер, не можете да поделите корени директоријум.", - "File request created and emails sent" : "Креиран је захтев за фајл и послате су и-мејл поруке", "Error creating the share: {errorMessage}" : "Greška pri pravljenju deljenja: {errorMessage}", "Error creating the share" : "Грешка при прављењу дељења", "Error sending emails: {errorMessage}" : "Грешка приликом слања и-мејл порука: {errorMessage}", "Error sending emails" : "Грешка приликом слања и-мејл порука", - "_Close and send email_::_Close and send {count} emails_" : ["Затвори и пошаљи и-мејл поруку","Затвори и пошаљи {count} и-мејл поруке","Затвори и пошаљи {count} и-мејл порука"], "Sharing" : "Дељење", "Accept shares from other accounts and groups by default" : "Подразумевано прихвати дељења са осталих налога и група", "Error while toggling options" : "Greška pri prebacivanju opcija", @@ -251,6 +246,8 @@ OC.L10N.register( "Deck board" : "Табла Шпила", "ScienceMesh" : "ScienceMesh", "on {server}" : "на серверу {server}", + "Enter your name" : "Унесите Ваше име", + "Submit name" : "Поднеси име", "Allow upload and editing" : "Дозволи отпремање и уређивање", "Allow editing" : "Дозволи уређивање", "Upload only" : "Само отпремање", @@ -303,7 +300,6 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "Фајл „{path}” се више не дели", "Folder \"{path}\" has been unshared" : "Фолдер „{path}” се више не дели", "Share {propertyName} saved" : "Сачувано је дељење {propertyName}", - "Create new file request" : "Креирај нови захтев за фајл", "Shared by" : "Поделио", "Shared with" : "Подељено са", "Password created successfully" : "Лозинка је успешно креирана", diff --git a/apps/files_sharing/l10n/sr.json b/apps/files_sharing/l10n/sr.json index adc14b2f7aa..a95f3b0b2bf 100644 --- a/apps/files_sharing/l10n/sr.json +++ b/apps/files_sharing/l10n/sr.json @@ -124,21 +124,18 @@ "Accept" : "Прихвати", "Decline" : "Одбиј", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Ова апликација омогућава људима да деле фајлове унутар Nextcloud инстанце. Када се укључи, админ може да одабере које групе могу да деле фајлове. Ти људи затим могу да деле фолдере и фајлове са осталим налозима и групама унутар Nextcloud инстанце. Уз то, ако админ укључи и могућност дељења линка, за дељење са корисницима ван Nextcloud инстанце може да се употреби спољни линк. Админи такође могу да форсирају лозинке, датум истека и да омогуће дељење између сервера преко линкова дељења, као и дељење са мобилних уређаја.\nИскључивањем ове могућности искључује се дељење фајлова и фолдера и на серверу са свим примаоцима дељења, као и на клијентима за синхорнизацију и мобилним апликацијама. Више информација можете наћи у Nextcloud документацији.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Ваш администратор је поставио обавезни подразумевани датум истека са максимумом од {days} дана.", "When should the request expire?" : "Када би захтев требало да истекне?", - "Set a submission expirationDate" : "Постави expirationDate за поднесак", "Expiration date" : "Датум истека", "Select a date" : "Изаберите датум", - "Your administrator has enforced a password protection." : "Ваш администратор је поставио обавезну заштиту лозинком", "What password should be used for the request?" : "Која лозинка би требало да се употреби за захтев?", "Set a password" : "Постави лозинку", "Password" : "Лозинка", "Enter a valid password" : "Унесите исправну лозинку", "Generate a new password" : "Генериши нову лозинку", + "Your administrator has enforced a password protection." : "Ваш администратор је поставио обавезну заштиту лозинком", "The request will expire on {date} at midnight and will be password protected." : "Захтев ће истећи дана {date} у поноћ и биће заштићен лозинком.", "The request will expire on {date} at midnight." : "Захтев ће истећи дана {date} у поноћ.", "The request will be password protected." : "Захтев ће бити заштићен лозинком.", - "Once created, you can share the link below to allow people to upload files to your directory." : "Када се креира, линк приказан испод можете да поделите и тако омогућите људима да отпремају фајлове у ваш директоријум.", "Share link" : "Веза дељења", "Copy to clipboard" : "Копирај у оставу", "Send link via email" : "Пошаљи линк и-мејлом", @@ -154,10 +151,10 @@ "Request subject" : "Тема захтева", "Birthday party photos, History assignment…" : "Слике за рођенданске забаве, рад из историје…", "Where should these files go?" : "Где би ови фајлови требало да иду?", - "The uploaded files are visible only to you unless you choose to share them." : "Отпремљене фајлове можете да видите само ви, осим ако не одлучите да их поделите.", "Upload destination" : "Одредиште отпремања", "Select a destination" : "Изаберите одредиште", "Revert to default" : "Ресетуј на подразумевано", + "The uploaded files are visible only to you unless you choose to share them." : "Отпремљене фајлове можете да видите само ви, осим ако не одлучите да их поделите.", "Add a note" : "Додај напомену", "Note for recipient" : "Напомена за примаоца", "Add a note to help people understand what you are requesting." : "Додајте напомену како би људи схватили шта захтевате.", @@ -167,18 +164,16 @@ "Collect files from others even if they do not have an account." : "Прикупи фајлове од осталих чак и ако немају налог.", "To ensure you can receive files, verify you have enough storage available." : "Да би били сигурни да можете примити фајлове, проверите да ли имате довољно празног простора.", "File request" : "Захтев за фајл", + "Previous step" : "Претходни корак", "Cancel" : "Одустани", "Cancel the file request creation" : "Откажи креирање захтева за фајл", - "Previous step" : "Претходни корак", - "Continue" : "Настави", "Close" : "Затвори", + "Continue" : "Настави", "Please select a folder, you cannot share the root directory." : "Молимо вас да изаберете фолдер, не можете да поделите корени директоријум.", - "File request created and emails sent" : "Креиран је захтев за фајл и послате су и-мејл поруке", "Error creating the share: {errorMessage}" : "Greška pri pravljenju deljenja: {errorMessage}", "Error creating the share" : "Грешка при прављењу дељења", "Error sending emails: {errorMessage}" : "Грешка приликом слања и-мејл порука: {errorMessage}", "Error sending emails" : "Грешка приликом слања и-мејл порука", - "_Close and send email_::_Close and send {count} emails_" : ["Затвори и пошаљи и-мејл поруку","Затвори и пошаљи {count} и-мејл поруке","Затвори и пошаљи {count} и-мејл порука"], "Sharing" : "Дељење", "Accept shares from other accounts and groups by default" : "Подразумевано прихвати дељења са осталих налога и група", "Error while toggling options" : "Greška pri prebacivanju opcija", @@ -249,6 +244,8 @@ "Deck board" : "Табла Шпила", "ScienceMesh" : "ScienceMesh", "on {server}" : "на серверу {server}", + "Enter your name" : "Унесите Ваше име", + "Submit name" : "Поднеси име", "Allow upload and editing" : "Дозволи отпремање и уређивање", "Allow editing" : "Дозволи уређивање", "Upload only" : "Само отпремање", @@ -301,7 +298,6 @@ "File \"{path}\" has been unshared" : "Фајл „{path}” се више не дели", "Folder \"{path}\" has been unshared" : "Фолдер „{path}” се више не дели", "Share {propertyName} saved" : "Сачувано је дељење {propertyName}", - "Create new file request" : "Креирај нови захтев за фајл", "Shared by" : "Поделио", "Shared with" : "Подељено са", "Password created successfully" : "Лозинка је успешно креирана", diff --git a/apps/files_sharing/l10n/sv.js b/apps/files_sharing/l10n/sv.js index 1d4ef87f754..db8de4dba0f 100644 --- a/apps/files_sharing/l10n/sv.js +++ b/apps/files_sharing/l10n/sv.js @@ -126,21 +126,21 @@ OC.L10N.register( "Accept" : "Acceptera", "Decline" : "Avböj", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Denna applikation gör det möjligt för användare att dela filer inom Nextcloud. Om aktiverad kan administratören välja vilka grupper som kan dela filer. De tillämpliga användarna kan sedan dela filer och mappar med andra användare och grupper inom Nextcloud. Dessutom, om administratören aktiverar funktionen dela länk, kan en extern länk användas för att dela filer med andra användare utanför Nextcloud. Administratörer kan också tvinga lösenord, utgångsdatum och aktivera server till serverdelning via delningslänkar samt dela från mobila enheter.\nOm du stänger av funktionen tar du bort delade filer och mappar på servern för alla delmottagare och även på synkroniseringsklienterna och mobilapparna. Mer information finns i dokumentationen för Nextcloud.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Din administratör har tillämpat ett standardutgångsdatum med ett maximum av {days} dagar.", "When should the request expire?" : "När ska begäran löpa ut?", - "Set a submission expirationDate" : "Ställ in utgångsdatum för inlämning", + "Set a submission expiration date" : "Ställ in utgångsdatum för inlämning", "Expiration date" : "Utgångsdatum", "Select a date" : "Välj ett datum", - "Your administrator has enforced a password protection." : "Din administratör har tillämpat ett lösenordsskydd.", + "Your administrator has enforced a {count} days expiration policy." : "Din administratör har tillämpat en {count} dagars utgångspolicy.", "What password should be used for the request?" : "Vilket lösenord ska användas för begäran?", "Set a password" : "Sätt ett lösenord", "Password" : "Lösenord", "Enter a valid password" : "Ange ett giltigt lösenord", "Generate a new password" : "Skapa ett nytt lösenord", + "Your administrator has enforced a password protection." : "Din administratör har tillämpat ett lösenordsskydd.", "The request will expire on {date} at midnight and will be password protected." : "Begäran upphör att gälla den {date} vid midnatt och kommer att vara lösenordsskyddad.", "The request will expire on {date} at midnight." : "Begäran upphör att gälla den {date} vid midnatt.", "The request will be password protected." : "Begäran kommer att vara lösenordsskyddad.", - "Once created, you can share the link below to allow people to upload files to your directory." : "När du har skapat den kan du dela länken nedan för att tillåta andra att ladda upp filer till din mapp.", + "You can now share the link below to allow people to upload files to your directory." : "Du kan nu dela länken nedan för att tillåta andra att ladda upp filer till din mapp.", "Share link" : "Dela länk", "Copy to clipboard" : "Kopiera till urklipp", "Send link via email" : "Skicka länk via e-post", @@ -156,31 +156,33 @@ OC.L10N.register( "Request subject" : "Begär ämne", "Birthday party photos, History assignment…" : "Foton på födelsedagsfester, historiauppgift...", "Where should these files go?" : "Vart ska dessa filer ta vägen?", - "The uploaded files are visible only to you unless you choose to share them." : "De uppladdade filerna är endast synliga för dig om du inte väljer att dela dem.", "Upload destination" : "Destination för uppladdning", "Select a destination" : "Välj en destination", "Revert to default" : "Återgå till standard", + "The uploaded files are visible only to you unless you choose to share them." : "De uppladdade filerna är endast synliga för dig om du inte väljer att dela dem.", "Add a note" : "Lägg till en notering", "Note for recipient" : "Notering till mottagare", "Add a note to help people understand what you are requesting." : "Lägg till en notering för att hjälpa andra att förstå vad du efterfrågar.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Du kan lägga till länkar, datum eller annan information som hjälper mottagaren att förstå vad du efterfrågar.", "Select" : "Välj", "Create a file request" : "Skapa en filförfrågan", "File request created" : "Filförfrågan skapad", "Collect files from others even if they do not have an account." : "Samla in filer från andra även om de inte har ett konto.", "To ensure you can receive files, verify you have enough storage available." : "För att säkerställa att du kan ta emot filer, kontrollera att du har tillräckligt med lagringsutrymme tillgängligt.", "File request" : "Filförfrågan", + "Previous step" : "Föregående steg", "Cancel" : "Avbryt", "Cancel the file request creation" : "Avbryt skapande av filförfrågan", - "Previous step" : "Föregående steg", - "Continue" : "Fortsätt", + "Close without sending emails" : "Stäng utan att skicka e-post", "Close" : "Stäng", + "Continue" : "Fortsätt", "Please select a folder, you cannot share the root directory." : "Välj en mapp, du kan inte dela rotkatalogen.", - "File request created and emails sent" : "Filförfrågan skapad och e-postmeddelanden skickade", "Error creating the share: {errorMessage}" : "Kunde inte skapa delningen: {errorMessage}", "Error creating the share" : "Kunde inte skapa delning", "Error sending emails: {errorMessage}" : "Kunde inte skicka e-postmeddelanden: {errorMessage}", "Error sending emails" : "Kunde inte skicka e-postmeddelanden", - "_Close and send email_::_Close and send {count} emails_" : ["Stäng och skicka e-post","Stäng och skicka {count} e-postmeddelanden"], + "_Send email and close_::_Send {count} emails and close_" : ["Skicka e-post och stäng","Skicka {count} e-postmeddelanden och stäng"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["Filförfrågan skapad och e-postmeddelanden skickade","Filförfrågan skapad och {count} e-postmeddelanden skickade"], "Sharing" : "Delning", "Accept shares from other accounts and groups by default" : "Acceptera delningar från andra konton och grupper som standard", "Error while toggling options" : "Fel vid ändring av inställningar", @@ -251,6 +253,11 @@ OC.L10N.register( "Deck board" : "Deck-plank", "ScienceMesh" : "ScienceMesh", "on {server}" : "på {server}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} delade en mapp med dig.", + "To upload files, you need to provide your name first." : "För att ladda upp filer måste du först ange ditt namn.", + "Enter your name" : "Ange ditt namn", + "Submit name" : "Skicka namn", + "Upload files to {folder}" : "Ladda upp filer till {folder}", "Allow upload and editing" : "Tillåt uppladdning och redigering", "Allow editing" : "Tillåt redigering", "Upload only" : "Endast uppladdning", @@ -303,7 +310,7 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "Fil \"{path}\" har slutat att delas", "Folder \"{path}\" has been unshared" : "Mapp \"{path}\" har slutat att delas", "Share {propertyName} saved" : "Delning {propertyName} sparad", - "Create new file request" : "Skapa ny filbegäran", + "Create file request" : "Skapa filförfrågan", "Shared by" : "Delad av", "Shared with" : "Delad med", "Password created successfully" : "Lösenordet har skapats", @@ -338,6 +345,7 @@ OC.L10N.register( "Shares you have received but not approved will show up here" : "Delningar du har mottagit men inte bekräftat kommer att visas här", "Share note" : "Dela kommentar", "Upload files to %s" : "Ladda upp filer till %s", + "%s shared a folder with you." : "%s delade en mapp med dig.", "Note" : "Anteckning", "Select or drop files" : "Välj eller dra filer hit", "Uploading files" : "Laddar upp filer", diff --git a/apps/files_sharing/l10n/sv.json b/apps/files_sharing/l10n/sv.json index df73a28f601..8d547d6480c 100644 --- a/apps/files_sharing/l10n/sv.json +++ b/apps/files_sharing/l10n/sv.json @@ -124,21 +124,21 @@ "Accept" : "Acceptera", "Decline" : "Avböj", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "Denna applikation gör det möjligt för användare att dela filer inom Nextcloud. Om aktiverad kan administratören välja vilka grupper som kan dela filer. De tillämpliga användarna kan sedan dela filer och mappar med andra användare och grupper inom Nextcloud. Dessutom, om administratören aktiverar funktionen dela länk, kan en extern länk användas för att dela filer med andra användare utanför Nextcloud. Administratörer kan också tvinga lösenord, utgångsdatum och aktivera server till serverdelning via delningslänkar samt dela från mobila enheter.\nOm du stänger av funktionen tar du bort delade filer och mappar på servern för alla delmottagare och även på synkroniseringsklienterna och mobilapparna. Mer information finns i dokumentationen för Nextcloud.", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "Din administratör har tillämpat ett standardutgångsdatum med ett maximum av {days} dagar.", "When should the request expire?" : "När ska begäran löpa ut?", - "Set a submission expirationDate" : "Ställ in utgångsdatum för inlämning", + "Set a submission expiration date" : "Ställ in utgångsdatum för inlämning", "Expiration date" : "Utgångsdatum", "Select a date" : "Välj ett datum", - "Your administrator has enforced a password protection." : "Din administratör har tillämpat ett lösenordsskydd.", + "Your administrator has enforced a {count} days expiration policy." : "Din administratör har tillämpat en {count} dagars utgångspolicy.", "What password should be used for the request?" : "Vilket lösenord ska användas för begäran?", "Set a password" : "Sätt ett lösenord", "Password" : "Lösenord", "Enter a valid password" : "Ange ett giltigt lösenord", "Generate a new password" : "Skapa ett nytt lösenord", + "Your administrator has enforced a password protection." : "Din administratör har tillämpat ett lösenordsskydd.", "The request will expire on {date} at midnight and will be password protected." : "Begäran upphör att gälla den {date} vid midnatt och kommer att vara lösenordsskyddad.", "The request will expire on {date} at midnight." : "Begäran upphör att gälla den {date} vid midnatt.", "The request will be password protected." : "Begäran kommer att vara lösenordsskyddad.", - "Once created, you can share the link below to allow people to upload files to your directory." : "När du har skapat den kan du dela länken nedan för att tillåta andra att ladda upp filer till din mapp.", + "You can now share the link below to allow people to upload files to your directory." : "Du kan nu dela länken nedan för att tillåta andra att ladda upp filer till din mapp.", "Share link" : "Dela länk", "Copy to clipboard" : "Kopiera till urklipp", "Send link via email" : "Skicka länk via e-post", @@ -154,31 +154,33 @@ "Request subject" : "Begär ämne", "Birthday party photos, History assignment…" : "Foton på födelsedagsfester, historiauppgift...", "Where should these files go?" : "Vart ska dessa filer ta vägen?", - "The uploaded files are visible only to you unless you choose to share them." : "De uppladdade filerna är endast synliga för dig om du inte väljer att dela dem.", "Upload destination" : "Destination för uppladdning", "Select a destination" : "Välj en destination", "Revert to default" : "Återgå till standard", + "The uploaded files are visible only to you unless you choose to share them." : "De uppladdade filerna är endast synliga för dig om du inte väljer att dela dem.", "Add a note" : "Lägg till en notering", "Note for recipient" : "Notering till mottagare", "Add a note to help people understand what you are requesting." : "Lägg till en notering för att hjälpa andra att förstå vad du efterfrågar.", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "Du kan lägga till länkar, datum eller annan information som hjälper mottagaren att förstå vad du efterfrågar.", "Select" : "Välj", "Create a file request" : "Skapa en filförfrågan", "File request created" : "Filförfrågan skapad", "Collect files from others even if they do not have an account." : "Samla in filer från andra även om de inte har ett konto.", "To ensure you can receive files, verify you have enough storage available." : "För att säkerställa att du kan ta emot filer, kontrollera att du har tillräckligt med lagringsutrymme tillgängligt.", "File request" : "Filförfrågan", + "Previous step" : "Föregående steg", "Cancel" : "Avbryt", "Cancel the file request creation" : "Avbryt skapande av filförfrågan", - "Previous step" : "Föregående steg", - "Continue" : "Fortsätt", + "Close without sending emails" : "Stäng utan att skicka e-post", "Close" : "Stäng", + "Continue" : "Fortsätt", "Please select a folder, you cannot share the root directory." : "Välj en mapp, du kan inte dela rotkatalogen.", - "File request created and emails sent" : "Filförfrågan skapad och e-postmeddelanden skickade", "Error creating the share: {errorMessage}" : "Kunde inte skapa delningen: {errorMessage}", "Error creating the share" : "Kunde inte skapa delning", "Error sending emails: {errorMessage}" : "Kunde inte skicka e-postmeddelanden: {errorMessage}", "Error sending emails" : "Kunde inte skicka e-postmeddelanden", - "_Close and send email_::_Close and send {count} emails_" : ["Stäng och skicka e-post","Stäng och skicka {count} e-postmeddelanden"], + "_Send email and close_::_Send {count} emails and close_" : ["Skicka e-post och stäng","Skicka {count} e-postmeddelanden och stäng"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["Filförfrågan skapad och e-postmeddelanden skickade","Filförfrågan skapad och {count} e-postmeddelanden skickade"], "Sharing" : "Delning", "Accept shares from other accounts and groups by default" : "Acceptera delningar från andra konton och grupper som standard", "Error while toggling options" : "Fel vid ändring av inställningar", @@ -249,6 +251,11 @@ "Deck board" : "Deck-plank", "ScienceMesh" : "ScienceMesh", "on {server}" : "på {server}", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} delade en mapp med dig.", + "To upload files, you need to provide your name first." : "För att ladda upp filer måste du först ange ditt namn.", + "Enter your name" : "Ange ditt namn", + "Submit name" : "Skicka namn", + "Upload files to {folder}" : "Ladda upp filer till {folder}", "Allow upload and editing" : "Tillåt uppladdning och redigering", "Allow editing" : "Tillåt redigering", "Upload only" : "Endast uppladdning", @@ -301,7 +308,7 @@ "File \"{path}\" has been unshared" : "Fil \"{path}\" har slutat att delas", "Folder \"{path}\" has been unshared" : "Mapp \"{path}\" har slutat att delas", "Share {propertyName} saved" : "Delning {propertyName} sparad", - "Create new file request" : "Skapa ny filbegäran", + "Create file request" : "Skapa filförfrågan", "Shared by" : "Delad av", "Shared with" : "Delad med", "Password created successfully" : "Lösenordet har skapats", @@ -336,6 +343,7 @@ "Shares you have received but not approved will show up here" : "Delningar du har mottagit men inte bekräftat kommer att visas här", "Share note" : "Dela kommentar", "Upload files to %s" : "Ladda upp filer till %s", + "%s shared a folder with you." : "%s delade en mapp med dig.", "Note" : "Anteckning", "Select or drop files" : "Välj eller dra filer hit", "Uploading files" : "Laddar upp filer", diff --git a/apps/files_sharing/l10n/tr.js b/apps/files_sharing/l10n/tr.js index 60421c22279..7916cd3ad27 100644 --- a/apps/files_sharing/l10n/tr.js +++ b/apps/files_sharing/l10n/tr.js @@ -125,8 +125,8 @@ OC.L10N.register( "Link copied to clipboard" : "Bağlantı panoya kopyalandı", "Select" : "Seçin", "Cancel" : "İptal", - "Continue" : "Sürdür", "Close" : "Kapat", + "Continue" : "Sürdür", "Error creating the share: {errorMessage}" : "Paylaşım oluşturulurken sorun çıktı: {errorMessage}", "Error creating the share" : "Paylaşım oluşturulurken sorun çıktı", "Sharing" : "Paylaşım", @@ -197,6 +197,8 @@ OC.L10N.register( "Deck board" : "Tahta panosu", "ScienceMesh" : "ScienceMesh", "on {server}" : "{server} üzerinde", + "Enter your name" : "Adınızı yazın", + "Submit name" : "Adı gönder", "Allow upload and editing" : "Yüklenebilsin ve düzenlenebilsin", "Allow editing" : "Düzenlemeye izin ver", "Upload only" : "Yalnızca yükleme", diff --git a/apps/files_sharing/l10n/tr.json b/apps/files_sharing/l10n/tr.json index 8efe4919991..b07ceb35df8 100644 --- a/apps/files_sharing/l10n/tr.json +++ b/apps/files_sharing/l10n/tr.json @@ -123,8 +123,8 @@ "Link copied to clipboard" : "Bağlantı panoya kopyalandı", "Select" : "Seçin", "Cancel" : "İptal", - "Continue" : "Sürdür", "Close" : "Kapat", + "Continue" : "Sürdür", "Error creating the share: {errorMessage}" : "Paylaşım oluşturulurken sorun çıktı: {errorMessage}", "Error creating the share" : "Paylaşım oluşturulurken sorun çıktı", "Sharing" : "Paylaşım", @@ -195,6 +195,8 @@ "Deck board" : "Tahta panosu", "ScienceMesh" : "ScienceMesh", "on {server}" : "{server} üzerinde", + "Enter your name" : "Adınızı yazın", + "Submit name" : "Adı gönder", "Allow upload and editing" : "Yüklenebilsin ve düzenlenebilsin", "Allow editing" : "Düzenlemeye izin ver", "Upload only" : "Yalnızca yükleme", diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js index d0d9f9d769a..3d25db520d4 100644 --- a/apps/files_sharing/l10n/uk.js +++ b/apps/files_sharing/l10n/uk.js @@ -124,8 +124,8 @@ OC.L10N.register( "Link copied to clipboard" : "Посилання скопійовано в буфер обміну", "Select" : "Вибрати", "Cancel" : "Скасувати", - "Continue" : "Продовжити", "Close" : "Закрити", + "Continue" : "Продовжити", "Error creating the share: {errorMessage}" : "Помилка під час створення спільного ресурсу: {errorMessage}", "Error creating the share" : "Помилка під час створення спільного ресурсу", "Sharing" : "Спільне", diff --git a/apps/files_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json index 31e9881925b..e0c85657681 100644 --- a/apps/files_sharing/l10n/uk.json +++ b/apps/files_sharing/l10n/uk.json @@ -122,8 +122,8 @@ "Link copied to clipboard" : "Посилання скопійовано в буфер обміну", "Select" : "Вибрати", "Cancel" : "Скасувати", - "Continue" : "Продовжити", "Close" : "Закрити", + "Continue" : "Продовжити", "Error creating the share: {errorMessage}" : "Помилка під час створення спільного ресурсу: {errorMessage}", "Error creating the share" : "Помилка під час створення спільного ресурсу", "Sharing" : "Спільне", diff --git a/apps/files_sharing/l10n/vi.js b/apps/files_sharing/l10n/vi.js index 8ad541bed91..bc7ad61cc81 100644 --- a/apps/files_sharing/l10n/vi.js +++ b/apps/files_sharing/l10n/vi.js @@ -120,8 +120,8 @@ OC.L10N.register( "Copy to clipboard" : "Sao chép vào clipboard", "Select" : "Chọn", "Cancel" : "Hủy bỏ", - "Continue" : "Tiếp tục", "Close" : "Đóng", + "Continue" : "Tiếp tục", "Error creating the share: {errorMessage}" : "Lỗi khi tạo chia sẻ: {errorMessage}", "Error creating the share" : "Lỗi khi tạo chia sẻ", "Sharing" : "Chia sẻ", diff --git a/apps/files_sharing/l10n/vi.json b/apps/files_sharing/l10n/vi.json index 483db264f06..79ed184864e 100644 --- a/apps/files_sharing/l10n/vi.json +++ b/apps/files_sharing/l10n/vi.json @@ -118,8 +118,8 @@ "Copy to clipboard" : "Sao chép vào clipboard", "Select" : "Chọn", "Cancel" : "Hủy bỏ", - "Continue" : "Tiếp tục", "Close" : "Đóng", + "Continue" : "Tiếp tục", "Error creating the share: {errorMessage}" : "Lỗi khi tạo chia sẻ: {errorMessage}", "Error creating the share" : "Lỗi khi tạo chia sẻ", "Sharing" : "Chia sẻ", diff --git a/apps/files_sharing/l10n/zh_CN.js b/apps/files_sharing/l10n/zh_CN.js index 80406cc21e1..5609d087b3d 100644 --- a/apps/files_sharing/l10n/zh_CN.js +++ b/apps/files_sharing/l10n/zh_CN.js @@ -125,8 +125,8 @@ OC.L10N.register( "Link copied to clipboard" : "链接已复制到剪贴板", "Select" : "选择", "Cancel" : "取消", - "Continue" : "继续", "Close" : "关闭", + "Continue" : "继续", "Error creating the share: {errorMessage}" : "创建共享失败:{errorMessage}", "Error creating the share" : "创建共享时出错", "Sharing" : "共享", @@ -197,6 +197,8 @@ OC.L10N.register( "Deck board" : "看板", "ScienceMesh" : "ScienceMesh", "on {server}" : "在 {server} 上", + "Enter your name" : "输入你的名字", + "Submit name" : "提交名称", "Allow upload and editing" : "允许上传和编辑", "Allow editing" : "允许编辑", "Upload only" : "仅上传", diff --git a/apps/files_sharing/l10n/zh_CN.json b/apps/files_sharing/l10n/zh_CN.json index 38533090db6..98c1e4930ec 100644 --- a/apps/files_sharing/l10n/zh_CN.json +++ b/apps/files_sharing/l10n/zh_CN.json @@ -123,8 +123,8 @@ "Link copied to clipboard" : "链接已复制到剪贴板", "Select" : "选择", "Cancel" : "取消", - "Continue" : "继续", "Close" : "关闭", + "Continue" : "继续", "Error creating the share: {errorMessage}" : "创建共享失败:{errorMessage}", "Error creating the share" : "创建共享时出错", "Sharing" : "共享", @@ -195,6 +195,8 @@ "Deck board" : "看板", "ScienceMesh" : "ScienceMesh", "on {server}" : "在 {server} 上", + "Enter your name" : "输入你的名字", + "Submit name" : "提交名称", "Allow upload and editing" : "允许上传和编辑", "Allow editing" : "允许编辑", "Upload only" : "仅上传", diff --git a/apps/files_sharing/l10n/zh_HK.js b/apps/files_sharing/l10n/zh_HK.js index 75eae4c996f..91f1e29dc0c 100644 --- a/apps/files_sharing/l10n/zh_HK.js +++ b/apps/files_sharing/l10n/zh_HK.js @@ -126,21 +126,21 @@ OC.L10N.register( "Accept" : "接受", "Decline" : "婉拒", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "該應用程序使用戶可以在Nextcloud中共享檔案。如果啟用,管理員可以選擇可以共享文件的群組。然後,適用的用戶可以與Nextcloud中的其他帳戶和群組共享檔案和資料夾。此外,如果管理員啟用了共享連結功能,則可以使用外部連結與Nextcloud之外的其他用戶分享檔案。管理員還可以實施密碼,有效期,並允許通過分享檔案進行伺服器到伺服器的分享以及從流動裝置進行分享。\n關閉此功能將刪除伺服器上所有分享收件人以及同步客戶端和流動應用程序上的分享了檔案和資料夾。Nextcloud文檔中提供了更多信息。", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "您的管理員已強制設置默認到期日期,最多為 {days} 天。", "When should the request expire?" : "請求應在何時過期?", - "Set a submission expirationDate" : "設置提交到期日期", + "Set a submission expiration date" : "設置提交屆滿日期", "Expiration date" : "到期日", "Select a date" : "選擇日期", - "Your administrator has enforced a password protection." : "您的管理員已強制設置密碼保護。", + "Your administrator has enforced a {count} days expiration policy." : "您的管理員已強制執行 {count} 天過期政策。", "What password should be used for the request?" : "請求應使用什麼密碼?", "Set a password" : "設定密碼", "Password" : "密碼", "Enter a valid password" : "輸入有效的密碼", "Generate a new password" : "生成新密碼", + "Your administrator has enforced a password protection." : "您的管理員已強制設置密碼保護。", "The request will expire on {date} at midnight and will be password protected." : "請求將於 {date} 凌晨過期,並將受到密碼保護。", "The request will expire on {date} at midnight." : "請求將於 {date} 凌晨過期。", "The request will be password protected." : "請求將受到密碼保護。", - "Once created, you can share the link below to allow people to upload files to your directory." : "創建後,您可以分享下面的連結,以允許其他人將檔案上傳到您的目錄中。", + "You can now share the link below to allow people to upload files to your directory." : "您現在可以分享下面的連結,以允許其他人將檔案上傳到您的目錄中。", "Share link" : "分享連結", "Copy to clipboard" : "複製到剪貼板", "Send link via email" : "透過電郵寄送連結", @@ -156,31 +156,33 @@ OC.L10N.register( "Request subject" : "請求主題", "Birthday party photos, History assignment…" : "生日派對照片、歷史作業 …", "Where should these files go?" : "這些檔案應該放在哪裡?", - "The uploaded files are visible only to you unless you choose to share them." : "上傳的文件僅對您可見,除非您選擇分享它們。", "Upload destination" : "上傳目標地", "Select a destination" : "選擇目的地", "Revert to default" : "恢復默認值", + "The uploaded files are visible only to you unless you choose to share them." : "上傳的文件僅對您可見,除非您選擇分享它們。", "Add a note" : "添加筆記", "Note for recipient" : "給收件人的備註", "Add a note to help people understand what you are requesting." : "添加備註以幫助他人了解您的請求。", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "您可以新增連結、日期或任何其他訊息,以幫助收件人了解您的請求。", "Select" : "選擇", "Create a file request" : "創建檔案請求", "File request created" : "創建了檔案請求", "Collect files from others even if they do not have an account." : "即使對方沒有帳戶,也可以收集檔案。", "To ensure you can receive files, verify you have enough storage available." : "為了確保您能接收檔案,請確認您有足夠的可用儲存空間。", "File request" : "檔案請求", + "Previous step" : "上一步", "Cancel" : "取消", "Cancel the file request creation" : "取消檔案請求創建", - "Previous step" : "上一步", - "Continue" : "繼續", + "Close without sending emails" : "關閉而不發送電子郵件", "Close" : "關閉", + "Continue" : "繼續", "Please select a folder, you cannot share the root directory." : "請選擇一個資料夾,您不能共享根目錄。", - "File request created and emails sent" : "檔案請求已創建,電子郵件已發送。", "Error creating the share: {errorMessage}" : "創建分享出錯:{errorMessage}", "Error creating the share" : "創建分享出錯", "Error sending emails: {errorMessage}" : "發送電子郵件時出錯:{errorMessage}", "Error sending emails" : "發送電子郵件時出錯", - "_Close and send email_::_Close and send {count} emails_" : ["關閉並發送 {count} 封電子郵件"], + "_Send email and close_::_Send {count} emails and close_" : ["發送 {count} 封電子郵件並關閉"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["檔案請求已創建,{count}封電子郵件已發送"], "Sharing" : "分享", "Accept shares from other accounts and groups by default" : "預設接受其他帳戶與群組的分享", "Error while toggling options" : "切換選項時出錯", @@ -251,6 +253,11 @@ OC.L10N.register( "Deck board" : "Deck 面板", "ScienceMesh" : "ScienceMesh", "on {server}" : "在 {server} 上", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} 與您分享了一個資料夾。", + "To upload files, you need to provide your name first." : "要上傳文件,您需要先提供您的姓名。", + "Enter your name" : "輸入您的名稱", + "Submit name" : "遞交名字", + "Upload files to {folder}" : "上傳檔案到 {folder}", "Allow upload and editing" : "允許上傳及編輯", "Allow editing" : "允許編輯", "Upload only" : "僅上傳", @@ -303,7 +310,7 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "檔案 “{path}” 已取消共享", "Folder \"{path}\" has been unshared" : "資料夾 “{path}” 已取消共享", "Share {propertyName} saved" : "分享 {propertyName} 已保存", - "Create new file request" : "創建新檔案請求", + "Create file request" : "創建檔案請求", "Shared by" : "分享自", "Shared with" : "分享給", "Password created successfully" : "成功創建了密碼", @@ -338,6 +345,7 @@ OC.L10N.register( "Shares you have received but not approved will show up here" : "您收到但尚未核准的分享將會在此顯示", "Share note" : "分享筆記", "Upload files to %s" : "上傳檔案到 %s", + "%s shared a folder with you." : "%s 與您分享了一個資料夾。", "Note" : "筆記", "Select or drop files" : "選擇或拖曳檔案至此", "Uploading files" : "檔案上傳中", diff --git a/apps/files_sharing/l10n/zh_HK.json b/apps/files_sharing/l10n/zh_HK.json index 549caf1406c..c660ba75326 100644 --- a/apps/files_sharing/l10n/zh_HK.json +++ b/apps/files_sharing/l10n/zh_HK.json @@ -124,21 +124,21 @@ "Accept" : "接受", "Decline" : "婉拒", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "該應用程序使用戶可以在Nextcloud中共享檔案。如果啟用,管理員可以選擇可以共享文件的群組。然後,適用的用戶可以與Nextcloud中的其他帳戶和群組共享檔案和資料夾。此外,如果管理員啟用了共享連結功能,則可以使用外部連結與Nextcloud之外的其他用戶分享檔案。管理員還可以實施密碼,有效期,並允許通過分享檔案進行伺服器到伺服器的分享以及從流動裝置進行分享。\n關閉此功能將刪除伺服器上所有分享收件人以及同步客戶端和流動應用程序上的分享了檔案和資料夾。Nextcloud文檔中提供了更多信息。", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "您的管理員已強制設置默認到期日期,最多為 {days} 天。", "When should the request expire?" : "請求應在何時過期?", - "Set a submission expirationDate" : "設置提交到期日期", + "Set a submission expiration date" : "設置提交屆滿日期", "Expiration date" : "到期日", "Select a date" : "選擇日期", - "Your administrator has enforced a password protection." : "您的管理員已強制設置密碼保護。", + "Your administrator has enforced a {count} days expiration policy." : "您的管理員已強制執行 {count} 天過期政策。", "What password should be used for the request?" : "請求應使用什麼密碼?", "Set a password" : "設定密碼", "Password" : "密碼", "Enter a valid password" : "輸入有效的密碼", "Generate a new password" : "生成新密碼", + "Your administrator has enforced a password protection." : "您的管理員已強制設置密碼保護。", "The request will expire on {date} at midnight and will be password protected." : "請求將於 {date} 凌晨過期,並將受到密碼保護。", "The request will expire on {date} at midnight." : "請求將於 {date} 凌晨過期。", "The request will be password protected." : "請求將受到密碼保護。", - "Once created, you can share the link below to allow people to upload files to your directory." : "創建後,您可以分享下面的連結,以允許其他人將檔案上傳到您的目錄中。", + "You can now share the link below to allow people to upload files to your directory." : "您現在可以分享下面的連結,以允許其他人將檔案上傳到您的目錄中。", "Share link" : "分享連結", "Copy to clipboard" : "複製到剪貼板", "Send link via email" : "透過電郵寄送連結", @@ -154,31 +154,33 @@ "Request subject" : "請求主題", "Birthday party photos, History assignment…" : "生日派對照片、歷史作業 …", "Where should these files go?" : "這些檔案應該放在哪裡?", - "The uploaded files are visible only to you unless you choose to share them." : "上傳的文件僅對您可見,除非您選擇分享它們。", "Upload destination" : "上傳目標地", "Select a destination" : "選擇目的地", "Revert to default" : "恢復默認值", + "The uploaded files are visible only to you unless you choose to share them." : "上傳的文件僅對您可見,除非您選擇分享它們。", "Add a note" : "添加筆記", "Note for recipient" : "給收件人的備註", "Add a note to help people understand what you are requesting." : "添加備註以幫助他人了解您的請求。", + "You can add links, date or any other information that will help the recipient understand what you are requesting." : "您可以新增連結、日期或任何其他訊息,以幫助收件人了解您的請求。", "Select" : "選擇", "Create a file request" : "創建檔案請求", "File request created" : "創建了檔案請求", "Collect files from others even if they do not have an account." : "即使對方沒有帳戶,也可以收集檔案。", "To ensure you can receive files, verify you have enough storage available." : "為了確保您能接收檔案,請確認您有足夠的可用儲存空間。", "File request" : "檔案請求", + "Previous step" : "上一步", "Cancel" : "取消", "Cancel the file request creation" : "取消檔案請求創建", - "Previous step" : "上一步", - "Continue" : "繼續", + "Close without sending emails" : "關閉而不發送電子郵件", "Close" : "關閉", + "Continue" : "繼續", "Please select a folder, you cannot share the root directory." : "請選擇一個資料夾,您不能共享根目錄。", - "File request created and emails sent" : "檔案請求已創建,電子郵件已發送。", "Error creating the share: {errorMessage}" : "創建分享出錯:{errorMessage}", "Error creating the share" : "創建分享出錯", "Error sending emails: {errorMessage}" : "發送電子郵件時出錯:{errorMessage}", "Error sending emails" : "發送電子郵件時出錯", - "_Close and send email_::_Close and send {count} emails_" : ["關閉並發送 {count} 封電子郵件"], + "_Send email and close_::_Send {count} emails and close_" : ["發送 {count} 封電子郵件並關閉"], + "_File request created and email sent_::_File request created and {count} emails sent_" : ["檔案請求已創建,{count}封電子郵件已發送"], "Sharing" : "分享", "Accept shares from other accounts and groups by default" : "預設接受其他帳戶與群組的分享", "Error while toggling options" : "切換選項時出錯", @@ -249,6 +251,11 @@ "Deck board" : "Deck 面板", "ScienceMesh" : "ScienceMesh", "on {server}" : "在 {server} 上", + "{ownerDisplayName} shared a folder with you." : "{ownerDisplayName} 與您分享了一個資料夾。", + "To upload files, you need to provide your name first." : "要上傳文件,您需要先提供您的姓名。", + "Enter your name" : "輸入您的名稱", + "Submit name" : "遞交名字", + "Upload files to {folder}" : "上傳檔案到 {folder}", "Allow upload and editing" : "允許上傳及編輯", "Allow editing" : "允許編輯", "Upload only" : "僅上傳", @@ -301,7 +308,7 @@ "File \"{path}\" has been unshared" : "檔案 “{path}” 已取消共享", "Folder \"{path}\" has been unshared" : "資料夾 “{path}” 已取消共享", "Share {propertyName} saved" : "分享 {propertyName} 已保存", - "Create new file request" : "創建新檔案請求", + "Create file request" : "創建檔案請求", "Shared by" : "分享自", "Shared with" : "分享給", "Password created successfully" : "成功創建了密碼", @@ -336,6 +343,7 @@ "Shares you have received but not approved will show up here" : "您收到但尚未核准的分享將會在此顯示", "Share note" : "分享筆記", "Upload files to %s" : "上傳檔案到 %s", + "%s shared a folder with you." : "%s 與您分享了一個資料夾。", "Note" : "筆記", "Select or drop files" : "選擇或拖曳檔案至此", "Uploading files" : "檔案上傳中", diff --git a/apps/files_sharing/l10n/zh_TW.js b/apps/files_sharing/l10n/zh_TW.js index b7a0514336e..ef86136d14a 100644 --- a/apps/files_sharing/l10n/zh_TW.js +++ b/apps/files_sharing/l10n/zh_TW.js @@ -126,21 +126,18 @@ OC.L10N.register( "Accept" : "接受", "Decline" : "回絕", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "此應用程式讓使用者可以在 Nextcloud 中分享檔案。若啟用,管理員可以選擇哪些群組可以分享檔案。應用程式使用者可以與其他在 Nextcloud 中的使用者與群組分享檔案與資料夾。此外,如果管理員啟用了分享連結的功能,則可以使用外部連結與 Nextcloud 之外的使用者分享檔案。管理員也可以啟用密碼、到期日以及啟用透過分享連結的伺服器到伺服器分享,並可從行動裝置分享。\n將此功能關閉會移除伺服器上、同步客戶端與行動應用程式所有的分享收件者,以及檔案與資料夾。更多資訊請見 Nextcloud 文件。", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "您的管理員已強制設定預設到期日,最多為{days}天。", "When should the request expire?" : "請求應在何時過期?", - "Set a submission expirationDate" : "設定遞交到期日", "Expiration date" : "到期日", "Select a date" : "選取日期", - "Your administrator has enforced a password protection." : "您的管理員已強制設定密碼保護。", "What password should be used for the request?" : "請求應該使用什麼密碼?", "Set a password" : "設定密碼", "Password" : "密碼", "Enter a valid password" : "輸入有效密碼", "Generate a new password" : "產生新密碼", + "Your administrator has enforced a password protection." : "您的管理員已強制設定密碼保護。", "The request will expire on {date} at midnight and will be password protected." : "請求將於{date}午夜過期,並將受到密碼保護。", "The request will expire on {date} at midnight." : "請求將於{date}午夜過期。", "The request will be password protected." : "請求將受到密碼保護。", - "Once created, you can share the link below to allow people to upload files to your directory." : "建立後,您可以分享下方的連結,以讓其他人上傳檔案到您的目錄中。", "Share link" : "分享連結", "Copy to clipboard" : "複製到剪貼簿", "Send link via email" : "透過 email 寄送連結", @@ -156,10 +153,10 @@ OC.L10N.register( "Request subject" : "請求主旨", "Birthday party photos, History assignment…" : "生日派對照片、歷史作業……", "Where should these files go?" : "這些檔案應該放在哪裡?", - "The uploaded files are visible only to you unless you choose to share them." : "上傳的檔案僅對您可見,除非您選擇分享它們。", "Upload destination" : "上傳目的地", "Select a destination" : "選取目的地", "Revert to default" : "還原回預設值", + "The uploaded files are visible only to you unless you choose to share them." : "上傳的檔案僅對您可見,除非您選擇分享它們。", "Add a note" : "新增備註", "Note for recipient" : "給收件者的備註", "Add a note to help people understand what you are requesting." : "新增備註以協助他人了解您的請求。", @@ -169,18 +166,16 @@ OC.L10N.register( "Collect files from others even if they do not have an account." : "即使對方沒有帳號,也可以蒐集檔案。", "To ensure you can receive files, verify you have enough storage available." : "為了確保您能接收檔案,請確認您有足夠的可用儲存空間。", "File request" : "檔案請求", + "Previous step" : "上一步", "Cancel" : "取消", "Cancel the file request creation" : "取消建立檔案請求", - "Previous step" : "上一步", - "Continue" : "繼續", "Close" : "關閉", + "Continue" : "繼續", "Please select a folder, you cannot share the root directory." : "請選取資料夾,您無法分享根目錄。", - "File request created and emails sent" : "已建立檔案請求並寄送電子郵件", "Error creating the share: {errorMessage}" : "建立分享時發生錯誤:{errorMessage}", "Error creating the share" : "建立分享時發生錯誤", "Error sending emails: {errorMessage}" : "寄送電子郵件時發生錯誤:{errorMessage}", "Error sending emails" : "寄送電子郵件時發生錯誤", - "_Close and send email_::_Close and send {count} emails_" : ["關閉並寄送 {count} 封電子郵件"], "Sharing" : "分享", "Accept shares from other accounts and groups by default" : "預設接受其他帳號與群組的分享", "Error while toggling options" : "切換選項時發生錯誤", @@ -251,6 +246,8 @@ OC.L10N.register( "Deck board" : "看板佈告欄", "ScienceMesh" : "ScienceMesh", "on {server}" : "於 {server}", + "Enter your name" : "輸入您的名稱", + "Submit name" : "遞交名稱", "Allow upload and editing" : "允許上傳及編輯", "Allow editing" : "允許編輯", "Upload only" : "僅上傳", @@ -303,7 +300,6 @@ OC.L10N.register( "File \"{path}\" has been unshared" : "檔案「{path}」已取消分享", "Folder \"{path}\" has been unshared" : "資料夾「{path}」已取消分享", "Share {propertyName} saved" : "分享 {propertyName} 已儲存", - "Create new file request" : "建立新檔案請求", "Shared by" : "分享自", "Shared with" : "分享給", "Password created successfully" : "成功建立密碼", diff --git a/apps/files_sharing/l10n/zh_TW.json b/apps/files_sharing/l10n/zh_TW.json index 265adc524ab..65eef028b19 100644 --- a/apps/files_sharing/l10n/zh_TW.json +++ b/apps/files_sharing/l10n/zh_TW.json @@ -124,21 +124,18 @@ "Accept" : "接受", "Decline" : "回絕", "This application enables people to share files within Nextcloud. If enabled, the admin can choose which groups can share files. The applicable people can then share files and folders with other accounts and groups within Nextcloud. In addition, if the admin enables the share link feature, an external link can be used to share files with other people outside of Nextcloud. Admins can also enforce passwords, expirations dates, and enable server to server sharing via share links, as well as sharing from mobile devices.\nTurning the feature off removes shared files and folders on the server for all share recipients, and also on the sync clients and mobile apps. More information is available in the Nextcloud Documentation." : "此應用程式讓使用者可以在 Nextcloud 中分享檔案。若啟用,管理員可以選擇哪些群組可以分享檔案。應用程式使用者可以與其他在 Nextcloud 中的使用者與群組分享檔案與資料夾。此外,如果管理員啟用了分享連結的功能,則可以使用外部連結與 Nextcloud 之外的使用者分享檔案。管理員也可以啟用密碼、到期日以及啟用透過分享連結的伺服器到伺服器分享,並可從行動裝置分享。\n將此功能關閉會移除伺服器上、同步客戶端與行動應用程式所有的分享收件者,以及檔案與資料夾。更多資訊請見 Nextcloud 文件。", - "Your administrator has enforced a default expiration date with a maximum {days} days." : "您的管理員已強制設定預設到期日,最多為{days}天。", "When should the request expire?" : "請求應在何時過期?", - "Set a submission expirationDate" : "設定遞交到期日", "Expiration date" : "到期日", "Select a date" : "選取日期", - "Your administrator has enforced a password protection." : "您的管理員已強制設定密碼保護。", "What password should be used for the request?" : "請求應該使用什麼密碼?", "Set a password" : "設定密碼", "Password" : "密碼", "Enter a valid password" : "輸入有效密碼", "Generate a new password" : "產生新密碼", + "Your administrator has enforced a password protection." : "您的管理員已強制設定密碼保護。", "The request will expire on {date} at midnight and will be password protected." : "請求將於{date}午夜過期,並將受到密碼保護。", "The request will expire on {date} at midnight." : "請求將於{date}午夜過期。", "The request will be password protected." : "請求將受到密碼保護。", - "Once created, you can share the link below to allow people to upload files to your directory." : "建立後,您可以分享下方的連結,以讓其他人上傳檔案到您的目錄中。", "Share link" : "分享連結", "Copy to clipboard" : "複製到剪貼簿", "Send link via email" : "透過 email 寄送連結", @@ -154,10 +151,10 @@ "Request subject" : "請求主旨", "Birthday party photos, History assignment…" : "生日派對照片、歷史作業……", "Where should these files go?" : "這些檔案應該放在哪裡?", - "The uploaded files are visible only to you unless you choose to share them." : "上傳的檔案僅對您可見,除非您選擇分享它們。", "Upload destination" : "上傳目的地", "Select a destination" : "選取目的地", "Revert to default" : "還原回預設值", + "The uploaded files are visible only to you unless you choose to share them." : "上傳的檔案僅對您可見,除非您選擇分享它們。", "Add a note" : "新增備註", "Note for recipient" : "給收件者的備註", "Add a note to help people understand what you are requesting." : "新增備註以協助他人了解您的請求。", @@ -167,18 +164,16 @@ "Collect files from others even if they do not have an account." : "即使對方沒有帳號,也可以蒐集檔案。", "To ensure you can receive files, verify you have enough storage available." : "為了確保您能接收檔案,請確認您有足夠的可用儲存空間。", "File request" : "檔案請求", + "Previous step" : "上一步", "Cancel" : "取消", "Cancel the file request creation" : "取消建立檔案請求", - "Previous step" : "上一步", - "Continue" : "繼續", "Close" : "關閉", + "Continue" : "繼續", "Please select a folder, you cannot share the root directory." : "請選取資料夾,您無法分享根目錄。", - "File request created and emails sent" : "已建立檔案請求並寄送電子郵件", "Error creating the share: {errorMessage}" : "建立分享時發生錯誤:{errorMessage}", "Error creating the share" : "建立分享時發生錯誤", "Error sending emails: {errorMessage}" : "寄送電子郵件時發生錯誤:{errorMessage}", "Error sending emails" : "寄送電子郵件時發生錯誤", - "_Close and send email_::_Close and send {count} emails_" : ["關閉並寄送 {count} 封電子郵件"], "Sharing" : "分享", "Accept shares from other accounts and groups by default" : "預設接受其他帳號與群組的分享", "Error while toggling options" : "切換選項時發生錯誤", @@ -249,6 +244,8 @@ "Deck board" : "看板佈告欄", "ScienceMesh" : "ScienceMesh", "on {server}" : "於 {server}", + "Enter your name" : "輸入您的名稱", + "Submit name" : "遞交名稱", "Allow upload and editing" : "允許上傳及編輯", "Allow editing" : "允許編輯", "Upload only" : "僅上傳", @@ -301,7 +298,6 @@ "File \"{path}\" has been unshared" : "檔案「{path}」已取消分享", "Folder \"{path}\" has been unshared" : "資料夾「{path}」已取消分享", "Share {propertyName} saved" : "分享 {propertyName} 已儲存", - "Create new file request" : "建立新檔案請求", "Shared by" : "分享自", "Shared with" : "分享給", "Password created successfully" : "成功建立密碼", diff --git a/apps/files_trashbin/l10n/da.js b/apps/files_trashbin/l10n/da.js index 9889526d8d6..30735a4c0c9 100644 --- a/apps/files_trashbin/l10n/da.js +++ b/apps/files_trashbin/l10n/da.js @@ -9,7 +9,9 @@ OC.L10N.register( "Restore" : "Gendan", "Unknown" : "Ukendt", "All files" : "Alle filer", + "You" : "Dig", "Original location" : "Oprindelig filplacering", + "Deleted by" : "Slettet af ", "Deleted" : "Slettet", "A long time ago" : "For lang tid siden", "List of files that have been deleted." : "Liste med filer der er blevet slettet.", diff --git a/apps/files_trashbin/l10n/da.json b/apps/files_trashbin/l10n/da.json index 8ace1d99a75..807a9538df0 100644 --- a/apps/files_trashbin/l10n/da.json +++ b/apps/files_trashbin/l10n/da.json @@ -7,7 +7,9 @@ "Restore" : "Gendan", "Unknown" : "Ukendt", "All files" : "Alle filer", + "You" : "Dig", "Original location" : "Oprindelig filplacering", + "Deleted by" : "Slettet af ", "Deleted" : "Slettet", "A long time ago" : "For lang tid siden", "List of files that have been deleted." : "Liste med filer der er blevet slettet.", diff --git a/apps/lookup_server_connector/l10n/da.js b/apps/lookup_server_connector/l10n/da.js index 4fd76a09b16..cd02406a81b 100644 --- a/apps/lookup_server_connector/l10n/da.js +++ b/apps/lookup_server_connector/l10n/da.js @@ -2,6 +2,7 @@ OC.L10N.register( "lookup_server_connector", { "Lookup Server Connector" : "Opslagsserverforbindelse", + "Sync public account information with the lookup server" : "Synkroniser offentlige kontooplysninger med opslagsserveren", "Sync public user information with the lookup server" : "Synkroniser offentlige brugeroplysninger med opslagsserveren" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/lookup_server_connector/l10n/da.json b/apps/lookup_server_connector/l10n/da.json index 375d14b3003..89009f8647d 100644 --- a/apps/lookup_server_connector/l10n/da.json +++ b/apps/lookup_server_connector/l10n/da.json @@ -1,5 +1,6 @@ { "translations": { "Lookup Server Connector" : "Opslagsserverforbindelse", + "Sync public account information with the lookup server" : "Synkroniser offentlige kontooplysninger med opslagsserveren", "Sync public user information with the lookup server" : "Synkroniser offentlige brugeroplysninger med opslagsserveren" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/ar.js b/apps/settings/l10n/ar.js index 346c8429e69..e190c0a7517 100644 --- a/apps/settings/l10n/ar.js +++ b/apps/settings/l10n/ar.js @@ -264,6 +264,7 @@ OC.L10N.register( "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "تم تمكين إعداد للقراءة فقط. هذا يمنع تعيين بعض الإعدادات عبر واجهة الويب. علاوة على ذلك ، يجب جعل الملف قابلاً للكتابة يدويًا لكل تحديث.", "Nextcloud configuration file is writable" : "ملف تهيئة نكست كلاود قابل للتعديل", "Scheduling objects table size" : "جدولة حجم جدول الكائنات", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "لديك أكثر من %s سطراً في قائمة العناصر المجدولة. رجاءًـ قم بتشغيل مهام الصيانة الثقيلة عبر الأمر السطري: \nocc maintenance:repair --include-expensive.", "Scheduling objects table size is within acceptable range." : "حجم جدول كائنات الجدولة يقع ضمن النطاق المقبول.", "HTTP headers" : "ترويسات الـ HTTP", "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- لم يتم تعيين ترويسة الـ HTTP ـ `%1$s` إلى `%2$s`. يمكن ألّا تعمل بعض الخصائص بالشكل الصحيح بسبب عدم ضبط هذا الإعداد كما يجب.", @@ -310,7 +311,10 @@ OC.L10N.register( "Profile information" : "معلومات الملف الشخصي", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "صورة الملف الشخصي، و الاسم الكامل، و الإيميل، و رقم الهاتف، و صفحة الوب، و حساب تويتر، و المؤسسة، و الوظيفة، و الترويسة، و السيرة الذاتية، و هل أن ملفك الشخصي مُفعّل", "Nextcloud settings" : "إعدادات نكست كلاود", + "Unified task processing" : "المعالجة الموحدة للمهام", + "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "يمكن تنفيذ مهام الذكاء الاصطناعي من خلال تطبيقات مختلفة. هنا يمكنك تعيين التطبيق الذي يجب استخدامه لأي مهمة.", "Task:" : "المُهِمّة:", + "None of your currently installed apps provide Task processing functionality" : "لا أحد من التطبيقات المثبتة مؤخراً يوفر خاصية معالجة المهام", "Machine translation" : "الترجمة الآلية", "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "يمكن تنفيذ الترجمة الآلية من خلال تطبيقات مختلفة. هنا يمكنك تحديد أسبقية تطبيقات الترجمة الآلية التي قمت بتثبيتها في الوقت الحالي.", "Speech-To-Text" : "تحويل الكلام إلى نص", @@ -811,6 +815,7 @@ OC.L10N.register( "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "يوجد حاليّاً مستخدم رفع شهادة أمان SSL لم تعد قيد الاستخدام منذ نكست كلاود 21. يمكن استيرادها باستعمال سطر الأوامر command line عبر الأمر \"occ security:certificates:import\". مساراتهم داخل دليل البيانات كما هي موضحة أدناه.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "المُعرّف الفريد الشامل UUID لمستخدمي و مجموعات LDAP الموجود غير صحيح. الرجاء مراجعة إعدادات \"تجاوز اكتشاف UUID\"ـ Override UUID detection في القسم المتقدم Expert part من تكوين LDAP واستخدم \"occ ldap: update-uuid\" لتحديثها.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "لم يتم ّتشغيل مزامنة دفتر عناوين نظام DAV حتى الآن لأن خادومك يحتوي على أكثر من 1000 مستخدم أو بسبب حدوث خطأ. يرجى تشغيله يدويًا عن طريق الاتصال بـ occ dav:sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "لديك أكثر من 50,000 سطر في قائمة المهام المجدولة. رجاءً، قم بتشغيل مهام الصيانة الثقيلة عبر الأمر السطري: \nocc maintenance:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "الإصدار المستعمل من MaridaDB هو \"%s\" . بدايةً من نكست كلاود 21 فما فوق تتطلب استعمال الإصدار MariaDN 10.2 أو أحدث.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "الإصدار المستعمل من MySQL هو \"%s\" . بدايةً من نكست كلاود 21 فما فوق تتطلب استعمال الإصدار MySAL 8.0 أو MariaDB 10.2 أو أحدث.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "الإصدار المستعمل من PostgreSQL هو \"%s\" . بدايةً من نكست كلاود 21 فما فوق تتطلب استعمال الإصدار PostgreSQL 9,6 أو أحدث.", diff --git a/apps/settings/l10n/ar.json b/apps/settings/l10n/ar.json index bcb45afa358..0238178bcdd 100644 --- a/apps/settings/l10n/ar.json +++ b/apps/settings/l10n/ar.json @@ -262,6 +262,7 @@ "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "تم تمكين إعداد للقراءة فقط. هذا يمنع تعيين بعض الإعدادات عبر واجهة الويب. علاوة على ذلك ، يجب جعل الملف قابلاً للكتابة يدويًا لكل تحديث.", "Nextcloud configuration file is writable" : "ملف تهيئة نكست كلاود قابل للتعديل", "Scheduling objects table size" : "جدولة حجم جدول الكائنات", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "لديك أكثر من %s سطراً في قائمة العناصر المجدولة. رجاءًـ قم بتشغيل مهام الصيانة الثقيلة عبر الأمر السطري: \nocc maintenance:repair --include-expensive.", "Scheduling objects table size is within acceptable range." : "حجم جدول كائنات الجدولة يقع ضمن النطاق المقبول.", "HTTP headers" : "ترويسات الـ HTTP", "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- لم يتم تعيين ترويسة الـ HTTP ـ `%1$s` إلى `%2$s`. يمكن ألّا تعمل بعض الخصائص بالشكل الصحيح بسبب عدم ضبط هذا الإعداد كما يجب.", @@ -308,7 +309,10 @@ "Profile information" : "معلومات الملف الشخصي", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "صورة الملف الشخصي، و الاسم الكامل، و الإيميل، و رقم الهاتف، و صفحة الوب، و حساب تويتر، و المؤسسة، و الوظيفة، و الترويسة، و السيرة الذاتية، و هل أن ملفك الشخصي مُفعّل", "Nextcloud settings" : "إعدادات نكست كلاود", + "Unified task processing" : "المعالجة الموحدة للمهام", + "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "يمكن تنفيذ مهام الذكاء الاصطناعي من خلال تطبيقات مختلفة. هنا يمكنك تعيين التطبيق الذي يجب استخدامه لأي مهمة.", "Task:" : "المُهِمّة:", + "None of your currently installed apps provide Task processing functionality" : "لا أحد من التطبيقات المثبتة مؤخراً يوفر خاصية معالجة المهام", "Machine translation" : "الترجمة الآلية", "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "يمكن تنفيذ الترجمة الآلية من خلال تطبيقات مختلفة. هنا يمكنك تحديد أسبقية تطبيقات الترجمة الآلية التي قمت بتثبيتها في الوقت الحالي.", "Speech-To-Text" : "تحويل الكلام إلى نص", @@ -809,6 +813,7 @@ "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "يوجد حاليّاً مستخدم رفع شهادة أمان SSL لم تعد قيد الاستخدام منذ نكست كلاود 21. يمكن استيرادها باستعمال سطر الأوامر command line عبر الأمر \"occ security:certificates:import\". مساراتهم داخل دليل البيانات كما هي موضحة أدناه.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "المُعرّف الفريد الشامل UUID لمستخدمي و مجموعات LDAP الموجود غير صحيح. الرجاء مراجعة إعدادات \"تجاوز اكتشاف UUID\"ـ Override UUID detection في القسم المتقدم Expert part من تكوين LDAP واستخدم \"occ ldap: update-uuid\" لتحديثها.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "لم يتم ّتشغيل مزامنة دفتر عناوين نظام DAV حتى الآن لأن خادومك يحتوي على أكثر من 1000 مستخدم أو بسبب حدوث خطأ. يرجى تشغيله يدويًا عن طريق الاتصال بـ occ dav:sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "لديك أكثر من 50,000 سطر في قائمة المهام المجدولة. رجاءً، قم بتشغيل مهام الصيانة الثقيلة عبر الأمر السطري: \nocc maintenance:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "الإصدار المستعمل من MaridaDB هو \"%s\" . بدايةً من نكست كلاود 21 فما فوق تتطلب استعمال الإصدار MariaDN 10.2 أو أحدث.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "الإصدار المستعمل من MySQL هو \"%s\" . بدايةً من نكست كلاود 21 فما فوق تتطلب استعمال الإصدار MySAL 8.0 أو MariaDB 10.2 أو أحدث.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "الإصدار المستعمل من PostgreSQL هو \"%s\" . بدايةً من نكست كلاود 21 فما فوق تتطلب استعمال الإصدار PostgreSQL 9,6 أو أحدث.", diff --git a/apps/settings/l10n/da.js b/apps/settings/l10n/da.js index f55b193a82d..26c8b65c9f5 100644 --- a/apps/settings/l10n/da.js +++ b/apps/settings/l10n/da.js @@ -10,7 +10,7 @@ OC.L10N.register( "Published" : "Udgivet", "Synchronize to trusted servers and the global and public address book" : "Synkroniser til betroede servere og den globale og offentlige adressebog", "Verify" : "Bekræft", - "Verifying …" : "Bekræfter.....", + "Verifying …" : "Bekræfter...", "Unable to change password" : "Kunne ikke ændre kodeord", "Very weak password" : "Meget svagt kodeord", "Weak password" : "Svagt kodeord", @@ -59,6 +59,7 @@ OC.L10N.register( "No Login supplied" : "Intet login angivet", "Unable to change password. Password too long." : "Kunne ikke ændre adgangskode. Adgangskode for lang.", "Authentication error" : "Adgangsfejl", + "Please provide an admin recovery password; otherwise, all account data will be lost." : "Angiv venligst en adgangskode til administratorgendannelse; ellers vil alle kontodata gå tabt.", "Wrong admin recovery password. Please check the password and try again." : "Forkert admin gendannelseskode. Se venligst koden efter og prøv igen.", "Administrator documentation" : "Administratordokumentation", "User documentation" : "Brugerdokumentation", diff --git a/apps/settings/l10n/da.json b/apps/settings/l10n/da.json index f2d26779a0f..5167b072151 100644 --- a/apps/settings/l10n/da.json +++ b/apps/settings/l10n/da.json @@ -8,7 +8,7 @@ "Published" : "Udgivet", "Synchronize to trusted servers and the global and public address book" : "Synkroniser til betroede servere og den globale og offentlige adressebog", "Verify" : "Bekræft", - "Verifying …" : "Bekræfter.....", + "Verifying …" : "Bekræfter...", "Unable to change password" : "Kunne ikke ændre kodeord", "Very weak password" : "Meget svagt kodeord", "Weak password" : "Svagt kodeord", @@ -57,6 +57,7 @@ "No Login supplied" : "Intet login angivet", "Unable to change password. Password too long." : "Kunne ikke ændre adgangskode. Adgangskode for lang.", "Authentication error" : "Adgangsfejl", + "Please provide an admin recovery password; otherwise, all account data will be lost." : "Angiv venligst en adgangskode til administratorgendannelse; ellers vil alle kontodata gå tabt.", "Wrong admin recovery password. Please check the password and try again." : "Forkert admin gendannelseskode. Se venligst koden efter og prøv igen.", "Administrator documentation" : "Administratordokumentation", "User documentation" : "Brugerdokumentation", diff --git a/apps/settings/l10n/de_DE.js b/apps/settings/l10n/de_DE.js index b923bce1e61..40615c505c5 100644 --- a/apps/settings/l10n/de_DE.js +++ b/apps/settings/l10n/de_DE.js @@ -264,7 +264,7 @@ OC.L10N.register( "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", "Nextcloud configuration file is writable" : "Die Nextcloud-Konfigurationsdatei ist beschreibbar", "Scheduling objects table size" : "Größe der Planungsobjekttabelle", - "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "Sie haben mehr als %s Zeilen in der Tabelle der Planungsobjekte. Bitte führen Sie aufwändige Reparaturaufträge über occ maintenance:repair --include-expensive aus.", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "Sie haben mehr als %s Zeilen in der Tabelle der geplanten Objekte. Bitte führen Sie umfangreiche Reparaturaufträge mittels occ maintenance:repair --include-expensive aus.", "Scheduling objects table size is within acceptable range." : "Die Größe der Planungsobjekttabelle liegt im akzeptablen Bereich.", "HTTP headers" : "HTTP-Header", "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- Der `%1$s`-HTTP-Header ist nicht auf `%2$s` gesetzt. Einige Funktionen arbeiten möglicherweise nicht richtig. Es wird daher empfohlen, diese Einstellung entsprechend anzupassen.", @@ -311,10 +311,10 @@ OC.L10N.register( "Profile information" : "Profilinformation", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Profilbild, vollständiger Name, E-Mail-Adresse, Telefonnummer, Adresse, Webseite, Twitter, Organisation, Rolle, Überschrift, Biografie und ob Ihr Profil aktiviert ist", "Nextcloud settings" : "Nextcloud-Einstellungen", - "Unified task processing" : "Einheitliche Aufgabenbearbeitung", + "Unified task processing" : "Vereinheitlichte Aufgabenbearbeitung", "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "KI-Aufgaben können mittels verschiedener Apps umgesetzt werden. Hier können Sie einstellen, welche App für welche Aufgabe verwendet werden soll.", "Task:" : "Aufgaben:", - "None of your currently installed apps provide Task processing functionality" : "Keine Ihrer derzeit installierten Apps bietet Funktionalität zur Aufgabenverarbeitung", + "None of your currently installed apps provide Task processing functionality" : "Keine Ihrer derzeit installierten Apps stellt Funktionen zur Aufgabenverarbeitung bereit", "Machine translation" : "Maschinelle Übersetzung", "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "Maschinelle Übersetzung kann mittels verschiedener Apps implementiert werden. Hier können Sie die Priorität der von Ihnen aktuell installierten maschinellen Übersetzungs-Apps festlegen.", "Speech-To-Text" : "Sprache-zu-Text", @@ -815,6 +815,7 @@ OC.L10N.register( "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Es sind einige vom Konto importierte SSL-Zertifikate vorhanden, die von Nextcloud 21 nicht mehr verwendet werden. Sie können über den Befehl \"occ security:certificates:import\" in der Befehlszeile importiert werden. Ihre Pfade innerhalb des Datenverzeichnisses werden unten angezeigt.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Konten oder -Gruppen gefunden. Bitte überprüfen Sie Ihre „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwenden Sie „occ ldap:update-uuid“, um sie zu aktualisieren.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "Die Synchronisierung des DAV-Systemadressbuchs wurde noch nicht ausgeführt, da Ihre Instanz mehr als 1000 Konten hat oder weil ein Fehler aufgetreten ist. Bitte führen Sie sie manuell aus, indem Sie occ dav:sync-system-addressbook aufrufen.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "Sie haben mehr als 50.000 Zeilen in der Tabelle der geplanten Objekte. Bitte führen Sie umfangreiche Reparaturaufträge mittels occ maintenance:repair --include-expensive aus.", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "MariaDB Version \"%s\" wird verwendet. Nextcloud 21 und neuer unterstützen diese Version nicht und benötigen MariaDB 10.2 oder neuer.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "MySQL Version \"%s\" wird verwendet. Nextcloud 21 und neuer unterstützten diese Version nicht und benötigen MySQL 8.0 oder MariaDB 10.2 oder neuer.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "PostgreSQL Version \"%s\" wird verwendet. Nextcloud 21 und neuer unterstützen diese Version nicht und beötigen PostgreSQL 9.6 oder neuer.", diff --git a/apps/settings/l10n/de_DE.json b/apps/settings/l10n/de_DE.json index 1a0be518afa..bfcfe130b4d 100644 --- a/apps/settings/l10n/de_DE.json +++ b/apps/settings/l10n/de_DE.json @@ -262,7 +262,7 @@ "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "Die schreibgeschützte Konfiguration wurde aktiviert. Dies verhindert das Setzen einiger Einstellungen über die Web-Schnittstelle. Weiterhin muss bei jedem Update der Schreibzugriff auf die Datei händisch aktiviert werden.", "Nextcloud configuration file is writable" : "Die Nextcloud-Konfigurationsdatei ist beschreibbar", "Scheduling objects table size" : "Größe der Planungsobjekttabelle", - "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "Sie haben mehr als %s Zeilen in der Tabelle der Planungsobjekte. Bitte führen Sie aufwändige Reparaturaufträge über occ maintenance:repair --include-expensive aus.", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "Sie haben mehr als %s Zeilen in der Tabelle der geplanten Objekte. Bitte führen Sie umfangreiche Reparaturaufträge mittels occ maintenance:repair --include-expensive aus.", "Scheduling objects table size is within acceptable range." : "Die Größe der Planungsobjekttabelle liegt im akzeptablen Bereich.", "HTTP headers" : "HTTP-Header", "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- Der `%1$s`-HTTP-Header ist nicht auf `%2$s` gesetzt. Einige Funktionen arbeiten möglicherweise nicht richtig. Es wird daher empfohlen, diese Einstellung entsprechend anzupassen.", @@ -309,10 +309,10 @@ "Profile information" : "Profilinformation", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Profilbild, vollständiger Name, E-Mail-Adresse, Telefonnummer, Adresse, Webseite, Twitter, Organisation, Rolle, Überschrift, Biografie und ob Ihr Profil aktiviert ist", "Nextcloud settings" : "Nextcloud-Einstellungen", - "Unified task processing" : "Einheitliche Aufgabenbearbeitung", + "Unified task processing" : "Vereinheitlichte Aufgabenbearbeitung", "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "KI-Aufgaben können mittels verschiedener Apps umgesetzt werden. Hier können Sie einstellen, welche App für welche Aufgabe verwendet werden soll.", "Task:" : "Aufgaben:", - "None of your currently installed apps provide Task processing functionality" : "Keine Ihrer derzeit installierten Apps bietet Funktionalität zur Aufgabenverarbeitung", + "None of your currently installed apps provide Task processing functionality" : "Keine Ihrer derzeit installierten Apps stellt Funktionen zur Aufgabenverarbeitung bereit", "Machine translation" : "Maschinelle Übersetzung", "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "Maschinelle Übersetzung kann mittels verschiedener Apps implementiert werden. Hier können Sie die Priorität der von Ihnen aktuell installierten maschinellen Übersetzungs-Apps festlegen.", "Speech-To-Text" : "Sprache-zu-Text", @@ -813,6 +813,7 @@ "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Es sind einige vom Konto importierte SSL-Zertifikate vorhanden, die von Nextcloud 21 nicht mehr verwendet werden. Sie können über den Befehl \"occ security:certificates:import\" in der Befehlszeile importiert werden. Ihre Pfade innerhalb des Datenverzeichnisses werden unten angezeigt.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Es wurden ungültige UUIDs von LDAP-Konten oder -Gruppen gefunden. Bitte überprüfen Sie Ihre „UUID-Erkennung überschreiben“-Einstellungen im Expertenteil der LDAP-Konfiguration und verwenden Sie „occ ldap:update-uuid“, um sie zu aktualisieren.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "Die Synchronisierung des DAV-Systemadressbuchs wurde noch nicht ausgeführt, da Ihre Instanz mehr als 1000 Konten hat oder weil ein Fehler aufgetreten ist. Bitte führen Sie sie manuell aus, indem Sie occ dav:sync-system-addressbook aufrufen.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "Sie haben mehr als 50.000 Zeilen in der Tabelle der geplanten Objekte. Bitte führen Sie umfangreiche Reparaturaufträge mittels occ maintenance:repair --include-expensive aus.", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "MariaDB Version \"%s\" wird verwendet. Nextcloud 21 und neuer unterstützen diese Version nicht und benötigen MariaDB 10.2 oder neuer.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "MySQL Version \"%s\" wird verwendet. Nextcloud 21 und neuer unterstützten diese Version nicht und benötigen MySQL 8.0 oder MariaDB 10.2 oder neuer.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "PostgreSQL Version \"%s\" wird verwendet. Nextcloud 21 und neuer unterstützen diese Version nicht und beötigen PostgreSQL 9.6 oder neuer.", diff --git a/apps/settings/l10n/en_GB.js b/apps/settings/l10n/en_GB.js index 24b7a199c85..0ec41dae2ed 100644 --- a/apps/settings/l10n/en_GB.js +++ b/apps/settings/l10n/en_GB.js @@ -264,6 +264,7 @@ OC.L10N.register( "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update.", "Nextcloud configuration file is writable" : "Nextcloud configuration file is writable", "Scheduling objects table size" : "Scheduling objects table size", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive.", "Scheduling objects table size is within acceptable range." : "Scheduling objects table size is within acceptable range.", "HTTP headers" : "HTTP headers", "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly.", @@ -310,7 +311,10 @@ OC.L10N.register( "Profile information" : "Profile information", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled", "Nextcloud settings" : "Nextcloud settings", + "Unified task processing" : "Unified task processing", + "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "AI tasks can be implemented by different apps. Here you can set which app should be used for which task.", "Task:" : "Task:", + "None of your currently installed apps provide Task processing functionality" : "None of your currently installed apps provide Task processing functionality", "Machine translation" : "Machine translation", "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment.", "Speech-To-Text" : "Speech-To-Text", @@ -811,6 +815,7 @@ OC.L10N.register( "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher.", diff --git a/apps/settings/l10n/en_GB.json b/apps/settings/l10n/en_GB.json index 74cf43b6cf6..4c54c2f549a 100644 --- a/apps/settings/l10n/en_GB.json +++ b/apps/settings/l10n/en_GB.json @@ -262,6 +262,7 @@ "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update.", "Nextcloud configuration file is writable" : "Nextcloud configuration file is writable", "Scheduling objects table size" : "Scheduling objects table size", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive.", "Scheduling objects table size is within acceptable range." : "Scheduling objects table size is within acceptable range.", "HTTP headers" : "HTTP headers", "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly.", @@ -308,7 +309,10 @@ "Profile information" : "Profile information", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled", "Nextcloud settings" : "Nextcloud settings", + "Unified task processing" : "Unified task processing", + "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "AI tasks can be implemented by different apps. Here you can set which app should be used for which task.", "Task:" : "Task:", + "None of your currently installed apps provide Task processing functionality" : "None of your currently installed apps provide Task processing functionality", "Machine translation" : "Machine translation", "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment.", "Speech-To-Text" : "Speech-To-Text", @@ -809,6 +813,7 @@ "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher.", diff --git a/apps/settings/l10n/ga.js b/apps/settings/l10n/ga.js index 1eafda97792..52bff4c714b 100644 --- a/apps/settings/l10n/ga.js +++ b/apps/settings/l10n/ga.js @@ -815,6 +815,7 @@ OC.L10N.register( "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Tá roinnt deimhnithe SSL iompórtáilte ag úsáideoirí i láthair, nach n-úsáidtear a thuilleadh le Nextcloud 21. Is féidir iad a iompórtáil ar an líne ordaithe trí ordú \"occ security:certificates:import\". Taispeántar thíos a gcuid cosáin taobh istigh den eolaire sonraí.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Fuarthas UUIDanna neamhbhailí úsáideoirí nó grúpaí LDAP. Athbhreithnigh do shocruithe \"Sáraigh braite UUID\" sa chuid Saineolaithe de chumraíocht LDAP agus úsáid \"occ ldap:update-uuid\" chun iad a nuashonrú le do thoil.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "Níor rith sioncronú leabhar seoltaí an chórais DAV fós toisc go bhfuil níos mó ná 1000 úsáideoir ag do chás nó toisc gur tharla earráid. Rith de láimh é le do thoil trí ghlao a chur ar occ dav:sync-system-addressbook le do thoil.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "Tá níos mó ná 50 000 sraith agat sa tábla réada sceidealaithe. Déan na jabanna deisiúcháin costasacha le do thoil trí chothabháil occ: deisiúchán --áirítear-daor", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Úsáidtear leagan MariaDB \"%s\". Ní thacaíonn Nextcloud 21 agus níos airde leis an leagan seo agus éilíonn siad MariaDB 10.2 nó níos airde.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Úsáidtear leagan MySQL \"%s\". Ní thacaíonn Nextcloud 21 agus níos airde leis an leagan seo agus éilíonn siad MySQL 8.0 nó MariaDB 10.2 nó níos airde.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Úsáidtear leagan PostgreSQL \"%s\". Ní thacaíonn Nextcloud 21 agus níos airde leis an leagan seo agus éilíonn siad PostgreSQL 9.6 nó níos airde.", diff --git a/apps/settings/l10n/ga.json b/apps/settings/l10n/ga.json index 0f6bc355540..3a690145434 100644 --- a/apps/settings/l10n/ga.json +++ b/apps/settings/l10n/ga.json @@ -813,6 +813,7 @@ "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Tá roinnt deimhnithe SSL iompórtáilte ag úsáideoirí i láthair, nach n-úsáidtear a thuilleadh le Nextcloud 21. Is féidir iad a iompórtáil ar an líne ordaithe trí ordú \"occ security:certificates:import\". Taispeántar thíos a gcuid cosáin taobh istigh den eolaire sonraí.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Fuarthas UUIDanna neamhbhailí úsáideoirí nó grúpaí LDAP. Athbhreithnigh do shocruithe \"Sáraigh braite UUID\" sa chuid Saineolaithe de chumraíocht LDAP agus úsáid \"occ ldap:update-uuid\" chun iad a nuashonrú le do thoil.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "Níor rith sioncronú leabhar seoltaí an chórais DAV fós toisc go bhfuil níos mó ná 1000 úsáideoir ag do chás nó toisc gur tharla earráid. Rith de láimh é le do thoil trí ghlao a chur ar occ dav:sync-system-addressbook le do thoil.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "Tá níos mó ná 50 000 sraith agat sa tábla réada sceidealaithe. Déan na jabanna deisiúcháin costasacha le do thoil trí chothabháil occ: deisiúchán --áirítear-daor", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Úsáidtear leagan MariaDB \"%s\". Ní thacaíonn Nextcloud 21 agus níos airde leis an leagan seo agus éilíonn siad MariaDB 10.2 nó níos airde.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Úsáidtear leagan MySQL \"%s\". Ní thacaíonn Nextcloud 21 agus níos airde leis an leagan seo agus éilíonn siad MySQL 8.0 nó MariaDB 10.2 nó níos airde.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Úsáidtear leagan PostgreSQL \"%s\". Ní thacaíonn Nextcloud 21 agus níos airde leis an leagan seo agus éilíonn siad PostgreSQL 9.6 nó níos airde.", diff --git a/apps/settings/l10n/gl.js b/apps/settings/l10n/gl.js index 4bfb033a6b1..c183c4b35d7 100644 --- a/apps/settings/l10n/gl.js +++ b/apps/settings/l10n/gl.js @@ -815,6 +815,7 @@ OC.L10N.register( "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Hai algúns certificados SSL importados polo usuario, que xa non se usan con Nextcloud 21. Pódense importar coa liña de ordes mediante a orde «occ security:certificates:import». As súas rutas dentro do directorio de datos amosanse deseguido.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Atopáronse UUID incorrectos de usuarios ou grupos LDAP. Revise a súa configuración de «Anular a detección de UUID» na parte Experto da configuración LDAP e utilice «occ ldap:update-uuid» para actualizalos.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "A sincronización do caderno de enderezos do sistema DAV aínda non foi executado porque a súa instancia ten máis de 1000 usuarios ou porque se produciu un erro. Execúteo manualmente con occ dav:sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "Ten máis de 50 000 filas na táboa de obxectos de planificación. Execute os custosos traballos de reparación mediante occ maintenance:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Utilízase a versión «%s» de MariaDB. Nextcloud 21 ou superior non admite esta versión e precisa MariaDB 10.2 ou superior.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Utilízase a versión «%s» de MySQL. Nextcloud 21 e superior non admite esta versión e precisan MySQL 8.0 ou MariaDB 10.2 ou superior.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Utilízase a versión «%s» de PostgreSQL. Nextcloud 21 ou superior non admite esta versión e precisa PostgreSQL 9.6 ou superior.", diff --git a/apps/settings/l10n/gl.json b/apps/settings/l10n/gl.json index 4ff2a5ce324..547bc392a19 100644 --- a/apps/settings/l10n/gl.json +++ b/apps/settings/l10n/gl.json @@ -813,6 +813,7 @@ "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Hai algúns certificados SSL importados polo usuario, que xa non se usan con Nextcloud 21. Pódense importar coa liña de ordes mediante a orde «occ security:certificates:import». As súas rutas dentro do directorio de datos amosanse deseguido.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Atopáronse UUID incorrectos de usuarios ou grupos LDAP. Revise a súa configuración de «Anular a detección de UUID» na parte Experto da configuración LDAP e utilice «occ ldap:update-uuid» para actualizalos.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "A sincronización do caderno de enderezos do sistema DAV aínda non foi executado porque a súa instancia ten máis de 1000 usuarios ou porque se produciu un erro. Execúteo manualmente con occ dav:sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "Ten máis de 50 000 filas na táboa de obxectos de planificación. Execute os custosos traballos de reparación mediante occ maintenance:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Utilízase a versión «%s» de MariaDB. Nextcloud 21 ou superior non admite esta versión e precisa MariaDB 10.2 ou superior.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Utilízase a versión «%s» de MySQL. Nextcloud 21 e superior non admite esta versión e precisan MySQL 8.0 ou MariaDB 10.2 ou superior.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Utilízase a versión «%s» de PostgreSQL. Nextcloud 21 ou superior non admite esta versión e precisa PostgreSQL 9.6 ou superior.", diff --git a/apps/settings/l10n/nb.js b/apps/settings/l10n/nb.js index 47a7ea87a52..19e6752d6dc 100644 --- a/apps/settings/l10n/nb.js +++ b/apps/settings/l10n/nb.js @@ -815,6 +815,7 @@ OC.L10N.register( "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Det er noen brukerimporterte SSL-sertifikater til stede, som ikke brukes lenger med Nextcloud 21. De kan importeres på kommandolinjen via kommandoen \"occ security:certificates:import\". Stiene deres i datakatalogen vises nedenfor.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Det er funnet ugyldige UUID-er for LDAP-brukere eller -grupper. Gå gjennom innstillingene for «Overstyr UUID-deteksjon» i Ekspert-delen av LDAP-konfigurasjonen, og bruk «occ ldap:update-uuid» for å oppdatere dem.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "DAV-systemadresseboksynkroniseringen har ikke kjørt enda fordi forekomsten har mer enn 1000 brukere, eller fordi det oppstod en feil. Kjør den manuelt ved å kalle occ dav: sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "Du har mer enn 500 000 rader i tabellen 'scheduling objects'. Kjør reparasjonsjobbene 'expensive' via occ maintenance:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "MariaDB versjon\"%s\" blir brukt. Nextcloud 21 og nyere støtter ikke denne versjonen og krever MariaDB 10.2 eller høyere.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "MySQL versjon \"%s\"blir brukt. Nextcloud 21 og nyere støtter ikke denne versjonen og krever MySQL 8.0 eller MariaDB 10.2 eller høyere.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "PostgreSQL versjon \"%s\" blir brukt. Nextcloud 21 og nyere støtter ikke denne versjonen og krever PostgreSQL 9.6 eller høyere.", diff --git a/apps/settings/l10n/nb.json b/apps/settings/l10n/nb.json index 932d21773ec..5c27cedede2 100644 --- a/apps/settings/l10n/nb.json +++ b/apps/settings/l10n/nb.json @@ -813,6 +813,7 @@ "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Det er noen brukerimporterte SSL-sertifikater til stede, som ikke brukes lenger med Nextcloud 21. De kan importeres på kommandolinjen via kommandoen \"occ security:certificates:import\". Stiene deres i datakatalogen vises nedenfor.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Det er funnet ugyldige UUID-er for LDAP-brukere eller -grupper. Gå gjennom innstillingene for «Overstyr UUID-deteksjon» i Ekspert-delen av LDAP-konfigurasjonen, og bruk «occ ldap:update-uuid» for å oppdatere dem.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "DAV-systemadresseboksynkroniseringen har ikke kjørt enda fordi forekomsten har mer enn 1000 brukere, eller fordi det oppstod en feil. Kjør den manuelt ved å kalle occ dav: sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "Du har mer enn 500 000 rader i tabellen 'scheduling objects'. Kjør reparasjonsjobbene 'expensive' via occ maintenance:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "MariaDB versjon\"%s\" blir brukt. Nextcloud 21 og nyere støtter ikke denne versjonen og krever MariaDB 10.2 eller høyere.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "MySQL versjon \"%s\"blir brukt. Nextcloud 21 og nyere støtter ikke denne versjonen og krever MySQL 8.0 eller MariaDB 10.2 eller høyere.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "PostgreSQL versjon \"%s\" blir brukt. Nextcloud 21 og nyere støtter ikke denne versjonen og krever PostgreSQL 9.6 eller høyere.", diff --git a/apps/settings/l10n/pt_BR.js b/apps/settings/l10n/pt_BR.js index 594abcc9ce3..38ee420073c 100644 --- a/apps/settings/l10n/pt_BR.js +++ b/apps/settings/l10n/pt_BR.js @@ -264,6 +264,7 @@ OC.L10N.register( "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração read-only foi ativada. Isso impede a definição de algumas configurações através da interface web. Além disso, o arquivo precisa ser gravado manualmente em cada atualização.", "Nextcloud configuration file is writable" : "O arquivo de configuração Nextcloud é gravável", "Scheduling objects table size" : "Agendamento do tamanho da tabela de objetos", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "Você tem mais de %s linhas na tabela de objetos de agendamento. Por favor, execute os trabalhos de reparo caros via occ Maintenance:repair --include-expensive.", "Scheduling objects table size is within acceptable range." : "O tamanho da tabela de objetos de agendamento está dentro do intervalo aceitável.", "HTTP headers" : "Cabeçalhos HTTP", "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- O cabeçalho HTTP `%1$s` não está definido como `%2$s`. Alguns recursos podem não funcionar corretamente, pois é recomendado ajustar essa configuração adequadamente.", @@ -310,7 +311,10 @@ OC.L10N.register( "Profile information" : "Informação do Perfil", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Foto do perfil, nome completo, e-mail, número de telefone, endereço, site, Twitter, organização, função, título, biografia e se seu perfil está ativado", "Nextcloud settings" : "Configurações Nextcloud", + "Unified task processing" : "Processamento unificado de tarefas", + "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "As tarefas de IA podem ser implementadas por diferentes aplicativos. Aqui você pode definir qual aplicativo deve ser usado para qual tarefa.", "Task:" : "Tarefa:", + "None of your currently installed apps provide Task processing functionality" : "Nenhum dos seus aplicativos instalados atualmente oferece funcionalidade de processamento de tarefas", "Machine translation" : "Maquina de tradução", "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "A tradução automática pode ser implementada por diferentes aplicativos. Aqui você pode definir a precedência dos aplicativos de tradução automática que você instalou no momento.", "Speech-To-Text" : "Fala-para-texto", @@ -811,6 +815,7 @@ OC.L10N.register( "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Existem alguns certificados SSL importados pelo usuário presentes, que não são mais usados com o Nextcloud 21. Eles podem ser importados na linha de comando através do comando \"occ security:certificates:import\". Seus caminhos dentro do diretório de dados são mostrados abaixo.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "UUIDs inválidos de usuários ou grupos LDAP foram encontrados. Revise suas configurações de \"Substituir detecção de UUID\" na parte Expert da configuração LDAP e use \"occ ldap:update-uuid\" para atualizá-las.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "A sincronização do catálogo de endereços do sistema DAV ainda não foi executada porque sua instância tem mais de 1000 usuários ou porque ocorreu um erro. Execute-o manualmente chamando occ dav:sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "Você tem mais de 50.000 linhas na tabela de objetos de agendamento. Execute os trabalhos de reparo caros por meio de manutenção occ:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "A versão do MariaDB \"1%s\" está sendo usada. Nextcloud 21 e superior não suportam esta versão e requerem MariaDB 10.2 ou superior.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "A versão do MySQL \"1%s\" está sendo usada. Nextcloud 21 e superior não suportam esta versão e requerem MySQL 8.0 ou MariaDB 10.2 ou superior.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "A versão do PostgreSQL \"1%s\" está sendo usada. Nextcloud 21 e superior não suportam esta versão e requerem o PostgreSQL 9.6 ou superior.", diff --git a/apps/settings/l10n/pt_BR.json b/apps/settings/l10n/pt_BR.json index a7791ac1648..1e5d2279c6d 100644 --- a/apps/settings/l10n/pt_BR.json +++ b/apps/settings/l10n/pt_BR.json @@ -262,6 +262,7 @@ "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "A configuração read-only foi ativada. Isso impede a definição de algumas configurações através da interface web. Além disso, o arquivo precisa ser gravado manualmente em cada atualização.", "Nextcloud configuration file is writable" : "O arquivo de configuração Nextcloud é gravável", "Scheduling objects table size" : "Agendamento do tamanho da tabela de objetos", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "Você tem mais de %s linhas na tabela de objetos de agendamento. Por favor, execute os trabalhos de reparo caros via occ Maintenance:repair --include-expensive.", "Scheduling objects table size is within acceptable range." : "O tamanho da tabela de objetos de agendamento está dentro do intervalo aceitável.", "HTTP headers" : "Cabeçalhos HTTP", "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- O cabeçalho HTTP `%1$s` não está definido como `%2$s`. Alguns recursos podem não funcionar corretamente, pois é recomendado ajustar essa configuração adequadamente.", @@ -308,7 +309,10 @@ "Profile information" : "Informação do Perfil", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Foto do perfil, nome completo, e-mail, número de telefone, endereço, site, Twitter, organização, função, título, biografia e se seu perfil está ativado", "Nextcloud settings" : "Configurações Nextcloud", + "Unified task processing" : "Processamento unificado de tarefas", + "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "As tarefas de IA podem ser implementadas por diferentes aplicativos. Aqui você pode definir qual aplicativo deve ser usado para qual tarefa.", "Task:" : "Tarefa:", + "None of your currently installed apps provide Task processing functionality" : "Nenhum dos seus aplicativos instalados atualmente oferece funcionalidade de processamento de tarefas", "Machine translation" : "Maquina de tradução", "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "A tradução automática pode ser implementada por diferentes aplicativos. Aqui você pode definir a precedência dos aplicativos de tradução automática que você instalou no momento.", "Speech-To-Text" : "Fala-para-texto", @@ -809,6 +813,7 @@ "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Existem alguns certificados SSL importados pelo usuário presentes, que não são mais usados com o Nextcloud 21. Eles podem ser importados na linha de comando através do comando \"occ security:certificates:import\". Seus caminhos dentro do diretório de dados são mostrados abaixo.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "UUIDs inválidos de usuários ou grupos LDAP foram encontrados. Revise suas configurações de \"Substituir detecção de UUID\" na parte Expert da configuração LDAP e use \"occ ldap:update-uuid\" para atualizá-las.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "A sincronização do catálogo de endereços do sistema DAV ainda não foi executada porque sua instância tem mais de 1000 usuários ou porque ocorreu um erro. Execute-o manualmente chamando occ dav:sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "Você tem mais de 50.000 linhas na tabela de objetos de agendamento. Execute os trabalhos de reparo caros por meio de manutenção occ:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "A versão do MariaDB \"1%s\" está sendo usada. Nextcloud 21 e superior não suportam esta versão e requerem MariaDB 10.2 ou superior.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "A versão do MySQL \"1%s\" está sendo usada. Nextcloud 21 e superior não suportam esta versão e requerem MySQL 8.0 ou MariaDB 10.2 ou superior.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "A versão do PostgreSQL \"1%s\" está sendo usada. Nextcloud 21 e superior não suportam esta versão e requerem o PostgreSQL 9.6 ou superior.", diff --git a/apps/settings/l10n/sl.js b/apps/settings/l10n/sl.js index 5bcea34053b..a17dca5a7f9 100644 --- a/apps/settings/l10n/sl.js +++ b/apps/settings/l10n/sl.js @@ -324,6 +324,10 @@ OC.L10N.register( "Login" : "Prijava", "Password" : "Geslo", "Show QR code for mobile apps" : "Pokaži kodo QR za mobilne programe", + "App password copied!" : "Geslo programa je kopirano!", + "Copy app password" : "Kopiraj geslo programa", + "Login name copied!" : "Prijavno ime je kopirano!", + "Copy login name" : "Kopiraj prijavno ime", "Could not copy app password. Please copy it manually." : "Gesla programa ni mogoče kopirati. Storite to ročno.", "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Za najboljše delovanje strežnika je pomembna ustrezna nastavitev opravil v ozadju. Pri večjih namestitvah je priporočljiva nastavitev »Cron«. Več podrobnosti je zapisanih v dokumentaciji.", "Last job execution ran {time}. Something seems wrong." : "Zadnji poskus izvedbe je bil izveden {time}. Kaže, da je šlo nekaj narobe.", @@ -396,9 +400,11 @@ OC.L10N.register( "No email address set" : "Poštni naslov ni nastavljen", "Your handle" : "Ročnik", "Your headline" : "Vaš naslov", + "Languages" : "Jeziki", "Help translate" : "Sodelujte pri prevajanju", "Unable to update language" : "Ni mogoče posodobiti jezika", "No language set" : "Jezik ni nastavljen", + "Locales" : "Jezikovne nastavitve", "Week starts on {firstDayOfWeek}" : "Prvi dan tedna je {firstDayOfWeek}", "Unable to update locale" : "Ni mogoče posodobiti jezikovnih nastavitev", "No locale set" : "Ni določenih jezikovnih nastavitev", @@ -406,12 +412,14 @@ OC.L10N.register( "Your organisation" : "Ustanova", "Your phone number" : "Osebna telefonska številka", "Edit your Profile visibility" : "Prilagodi vidnost profila", + "Enable profile" : "Omogoči profil", "Unable to update profile enabled state" : "Ni mogoče posodobiti omogočenega stanja profila", "Unable to update visibility of {displayId}" : "Ni mogoče posodobiti vidnosti {displayId}", "Your role" : "Vloga", "Your X (formerly Twitter) handle" : "Osebni ročnik X (prej Twitter)", "Your website" : "Osebna spletna stran", "No {property} set" : "Lastnost {property} ni nastavljena", + "Invalid value" : "Neveljavna vrednost", "Unable to update {property}" : "Lastnosti {property} ni mogoče posodobiti", "Change scope level of {property}, current scope is {scope}" : "Spremenite raven obsega lastnosti {property}, trenutno je določena kot {scope}", "Unable to update federation scope of the primary {property}" : "Ni mogoče posodobiti obsega zveznosti osnovne lastnosti {property}", @@ -422,6 +430,9 @@ OC.L10N.register( "Change" : "Spreminjanje", "Delete" : "Brisanje", "Reshare" : "Nadaljnja souporaba", + "No accounts" : "Ni računov", + "Loading accounts …" : "Poteka nalaganje računov ...", + "List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list." : "Seznam računov. Seznam zaradi zmogljivosti sistema ni v celoti prikazan. Podatki uporabnikov se nalagajo med pomikanjem po seznamu.", "Default language" : "Privzeti jezik", "Common languages" : "Splošni jeziki", "Other languages" : "Drugi jeziki", @@ -432,12 +443,22 @@ OC.L10N.register( "Password (required)" : "Geslo (zahtevano)", "Email (required)" : "Elektronski naslov (zahtevano)", "Email" : "Elektronski naslov", + "Member of the following groups" : "Član navedenih skupin", + "Set account groups" : "Nastavi skupine računov", + "Admin of the following groups" : "Skrbnik navedenih skupin", + "Set account as admin for …" : "Nastavi račun kot skrbniški za ...", "Quota" : "Količinska omejitev", + "Set account quota" : "Nastavi količinsko omejitev računa", "Language" : "Jezik", "Set default language" : "Nastavi privzeti jezik", + "Add new account" : "Dodaj nov račun", "Manager" : "Upravljalnik", + "Account name will be autogenerated" : "iME RAČUNA bo samodejno ustvarjeno", + "Account name (required)" : "Ime računa (zahtevano)", "Total rows summary" : "Skupni povzetek vrstic", "Scroll to load more rows" : "Podrsajte za nalaganje več vrstic", + "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} račun ...","{userCount} računa ...","{userCount} računi ...","{userCount} računov ..."], + "_{userCount} account_::_{userCount} accounts_" : ["{userCount} račun ...","{userCount} računa ...","{userCount} računi ...","{userCount} računov ..."], "Avatar" : "Podoba", "Account name" : "Ime računa", "Group admin for" : "Skrbnik skupine za", @@ -445,11 +466,19 @@ OC.L10N.register( "Last login" : "Zadnja prijava", "Account actions" : "Dejanja računa", "Password or insufficient permissions message" : "Sporočilo gesla oziroma neustreznih dovoljenj", + "Loading account …" : "Poteka nalaganje računa ...", "Change display name" : "Spremeni prikazno ime", "Set new password" : "Nastavi novo geslo", "Set new email address" : "Nastavi nov elektronski naslov", + "Add account to group" : "Dodaj račun v skupino", + "Set account as admin for" : "Nastavi račun kot skrbniški za ...", + "Select account quota" : "Nastavi količinsko omejitev računa", "Set the language" : "Nastavi jezik", "{size} used" : "V uporabi {size}·", + "Delete account" : "Izbriši račun", + "Disconnect all devices and delete local data" : "Odklopi vse naprave in izbriši krajevne podatke", + "Disable account" : "Onemogoči račun", + "Enable account" : "Omogoči račun", "Resend welcome email" : "Ponovno pošlji potrditveno sporočilo", "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "Možnost omogoča varnostno brisanje podatkov Nextcloud z vseh naprav, povezanih z uporabniškim računom {userid}. Možnost deluje le, če so naprave povezane v spletno omrežje. Brisanje z oddaljenih naprav je uporabno v primeru izgubljene naprave, ali na primer prekinitve sodelovanja v neki skupini.", "Remote wipe of devices" : "Oddaljeno varnostno brisanje naprav", @@ -469,7 +498,11 @@ OC.L10N.register( "Show storage path" : "Pokaži pot mesta shrambe", "Show last login" : "Pokaži zadnjo prijavo", "Sorting" : "Razvrščanje", + "Group list sorting" : "Razvrščanje seznama skupin", + "By member count" : "Po številu članov", + "By name" : "Po imenu", "Send email" : "Pošlji elektronsko sporočilo", + "Send welcome email to new accounts" : "Pošlji sporočilo novim za nove račune", "Defaults" : "Privzeto", "Default quota" : "Privzeta omejitev", "Select default quota" : "Izbor količinske omejitve", @@ -486,7 +519,15 @@ OC.L10N.register( "Your browser does not support WebAuthn." : "Brskalnik ne podpira overitve WebAuthn.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Skrbnik lahko prilagodi možnosti souporabe. Več podrobnosti je zapisanih v dokumentaciji.", "You need to enable the File sharing App." : "Omogočiti je treba program Souporabe datotek.", + "Loading app list" : "Poteka nalaganje seznama programov ...", + "App Store" : "Programska trgovina", + "Loading categories" : "Poteka nalaganje kategorij", + "Developer documentation ↗" : "Dokumentacija za razvijalce ↗", + "Version {version}, {license}-licensed" : "Različica {version}, z dovoljenjem {license}", + "All accounts" : "Vsi računi", "Admins" : "Skrbniki", + "Account management" : "Upravljanje z računi", + "Creating group…" : "Poteka ustvarjanje skupine ...", "Create group" : "Ustvari skupino", "Group name" : "Ime skupine", "Please enter a valid group name" : "Vpisati je treba veljavno ime skupine", @@ -505,6 +546,7 @@ OC.L10N.register( "X (formerly Twitter)" : "X (prej Twitter)", "Fediverse (e.g. Mastodon)" : "Fediverse (na primer Mastodon)", "Website" : "Spletna stran", + "Date of birth" : "Datum rojstva", "Profile visibility" : "Vidnost profila", "Locale" : "Jezikovne nastavitve", "Your apps" : "Vsi programi", @@ -550,6 +592,7 @@ OC.L10N.register( "Authentication" : "Overitev", "Authentication required" : "Zahtevana je overitev", "Credentials" : "Poverila", + "SMTP Login" : "Prijava SMTP", "SMTP Password" : "Geslo SMTP", "Save" : "Shrani", "Test and verify email settings" : "Preizkusi in overi nastavitve elektronske pošte", @@ -700,6 +743,7 @@ OC.L10N.register( "User management settings" : "Nastavitve upravljanja z računi uporabnikov", "Send welcome email to new users" : "Pošlji sporočilo novim uporabnikom", "Creating group …" : "Poteka ustvarjanje skupine ...", + "User group: {group}" : "Skupina uporabnikov: {group}", "Nextcloud help resources" : "Viri pomoči za okolje Nextcloud" }, "nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);"); diff --git a/apps/settings/l10n/sl.json b/apps/settings/l10n/sl.json index a35b3f0acf9..9580b3dd688 100644 --- a/apps/settings/l10n/sl.json +++ b/apps/settings/l10n/sl.json @@ -322,6 +322,10 @@ "Login" : "Prijava", "Password" : "Geslo", "Show QR code for mobile apps" : "Pokaži kodo QR za mobilne programe", + "App password copied!" : "Geslo programa je kopirano!", + "Copy app password" : "Kopiraj geslo programa", + "Login name copied!" : "Prijavno ime je kopirano!", + "Copy login name" : "Kopiraj prijavno ime", "Could not copy app password. Please copy it manually." : "Gesla programa ni mogoče kopirati. Storite to ročno.", "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Za najboljše delovanje strežnika je pomembna ustrezna nastavitev opravil v ozadju. Pri večjih namestitvah je priporočljiva nastavitev »Cron«. Več podrobnosti je zapisanih v dokumentaciji.", "Last job execution ran {time}. Something seems wrong." : "Zadnji poskus izvedbe je bil izveden {time}. Kaže, da je šlo nekaj narobe.", @@ -394,9 +398,11 @@ "No email address set" : "Poštni naslov ni nastavljen", "Your handle" : "Ročnik", "Your headline" : "Vaš naslov", + "Languages" : "Jeziki", "Help translate" : "Sodelujte pri prevajanju", "Unable to update language" : "Ni mogoče posodobiti jezika", "No language set" : "Jezik ni nastavljen", + "Locales" : "Jezikovne nastavitve", "Week starts on {firstDayOfWeek}" : "Prvi dan tedna je {firstDayOfWeek}", "Unable to update locale" : "Ni mogoče posodobiti jezikovnih nastavitev", "No locale set" : "Ni določenih jezikovnih nastavitev", @@ -404,12 +410,14 @@ "Your organisation" : "Ustanova", "Your phone number" : "Osebna telefonska številka", "Edit your Profile visibility" : "Prilagodi vidnost profila", + "Enable profile" : "Omogoči profil", "Unable to update profile enabled state" : "Ni mogoče posodobiti omogočenega stanja profila", "Unable to update visibility of {displayId}" : "Ni mogoče posodobiti vidnosti {displayId}", "Your role" : "Vloga", "Your X (formerly Twitter) handle" : "Osebni ročnik X (prej Twitter)", "Your website" : "Osebna spletna stran", "No {property} set" : "Lastnost {property} ni nastavljena", + "Invalid value" : "Neveljavna vrednost", "Unable to update {property}" : "Lastnosti {property} ni mogoče posodobiti", "Change scope level of {property}, current scope is {scope}" : "Spremenite raven obsega lastnosti {property}, trenutno je določena kot {scope}", "Unable to update federation scope of the primary {property}" : "Ni mogoče posodobiti obsega zveznosti osnovne lastnosti {property}", @@ -420,6 +428,9 @@ "Change" : "Spreminjanje", "Delete" : "Brisanje", "Reshare" : "Nadaljnja souporaba", + "No accounts" : "Ni računov", + "Loading accounts …" : "Poteka nalaganje računov ...", + "List of accounts. This list is not fully rendered for performance reasons. The accounts will be rendered as you navigate through the list." : "Seznam računov. Seznam zaradi zmogljivosti sistema ni v celoti prikazan. Podatki uporabnikov se nalagajo med pomikanjem po seznamu.", "Default language" : "Privzeti jezik", "Common languages" : "Splošni jeziki", "Other languages" : "Drugi jeziki", @@ -430,12 +441,22 @@ "Password (required)" : "Geslo (zahtevano)", "Email (required)" : "Elektronski naslov (zahtevano)", "Email" : "Elektronski naslov", + "Member of the following groups" : "Član navedenih skupin", + "Set account groups" : "Nastavi skupine računov", + "Admin of the following groups" : "Skrbnik navedenih skupin", + "Set account as admin for …" : "Nastavi račun kot skrbniški za ...", "Quota" : "Količinska omejitev", + "Set account quota" : "Nastavi količinsko omejitev računa", "Language" : "Jezik", "Set default language" : "Nastavi privzeti jezik", + "Add new account" : "Dodaj nov račun", "Manager" : "Upravljalnik", + "Account name will be autogenerated" : "iME RAČUNA bo samodejno ustvarjeno", + "Account name (required)" : "Ime računa (zahtevano)", "Total rows summary" : "Skupni povzetek vrstic", "Scroll to load more rows" : "Podrsajte za nalaganje več vrstic", + "_{userCount} account …_::_{userCount} accounts …_" : ["{userCount} račun ...","{userCount} računa ...","{userCount} računi ...","{userCount} računov ..."], + "_{userCount} account_::_{userCount} accounts_" : ["{userCount} račun ...","{userCount} računa ...","{userCount} računi ...","{userCount} računov ..."], "Avatar" : "Podoba", "Account name" : "Ime računa", "Group admin for" : "Skrbnik skupine za", @@ -443,11 +464,19 @@ "Last login" : "Zadnja prijava", "Account actions" : "Dejanja računa", "Password or insufficient permissions message" : "Sporočilo gesla oziroma neustreznih dovoljenj", + "Loading account …" : "Poteka nalaganje računa ...", "Change display name" : "Spremeni prikazno ime", "Set new password" : "Nastavi novo geslo", "Set new email address" : "Nastavi nov elektronski naslov", + "Add account to group" : "Dodaj račun v skupino", + "Set account as admin for" : "Nastavi račun kot skrbniški za ...", + "Select account quota" : "Nastavi količinsko omejitev računa", "Set the language" : "Nastavi jezik", "{size} used" : "V uporabi {size}·", + "Delete account" : "Izbriši račun", + "Disconnect all devices and delete local data" : "Odklopi vse naprave in izbriši krajevne podatke", + "Disable account" : "Onemogoči račun", + "Enable account" : "Omogoči račun", "Resend welcome email" : "Ponovno pošlji potrditveno sporočilo", "In case of lost device or exiting the organization, this can remotely wipe the Nextcloud data from all devices associated with {userid}. Only works if the devices are connected to the internet." : "Možnost omogoča varnostno brisanje podatkov Nextcloud z vseh naprav, povezanih z uporabniškim računom {userid}. Možnost deluje le, če so naprave povezane v spletno omrežje. Brisanje z oddaljenih naprav je uporabno v primeru izgubljene naprave, ali na primer prekinitve sodelovanja v neki skupini.", "Remote wipe of devices" : "Oddaljeno varnostno brisanje naprav", @@ -467,7 +496,11 @@ "Show storage path" : "Pokaži pot mesta shrambe", "Show last login" : "Pokaži zadnjo prijavo", "Sorting" : "Razvrščanje", + "Group list sorting" : "Razvrščanje seznama skupin", + "By member count" : "Po številu članov", + "By name" : "Po imenu", "Send email" : "Pošlji elektronsko sporočilo", + "Send welcome email to new accounts" : "Pošlji sporočilo novim za nove račune", "Defaults" : "Privzeto", "Default quota" : "Privzeta omejitev", "Select default quota" : "Izbor količinske omejitve", @@ -484,7 +517,15 @@ "Your browser does not support WebAuthn." : "Brskalnik ne podpira overitve WebAuthn.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Skrbnik lahko prilagodi možnosti souporabe. Več podrobnosti je zapisanih v dokumentaciji.", "You need to enable the File sharing App." : "Omogočiti je treba program Souporabe datotek.", + "Loading app list" : "Poteka nalaganje seznama programov ...", + "App Store" : "Programska trgovina", + "Loading categories" : "Poteka nalaganje kategorij", + "Developer documentation ↗" : "Dokumentacija za razvijalce ↗", + "Version {version}, {license}-licensed" : "Različica {version}, z dovoljenjem {license}", + "All accounts" : "Vsi računi", "Admins" : "Skrbniki", + "Account management" : "Upravljanje z računi", + "Creating group…" : "Poteka ustvarjanje skupine ...", "Create group" : "Ustvari skupino", "Group name" : "Ime skupine", "Please enter a valid group name" : "Vpisati je treba veljavno ime skupine", @@ -503,6 +544,7 @@ "X (formerly Twitter)" : "X (prej Twitter)", "Fediverse (e.g. Mastodon)" : "Fediverse (na primer Mastodon)", "Website" : "Spletna stran", + "Date of birth" : "Datum rojstva", "Profile visibility" : "Vidnost profila", "Locale" : "Jezikovne nastavitve", "Your apps" : "Vsi programi", @@ -548,6 +590,7 @@ "Authentication" : "Overitev", "Authentication required" : "Zahtevana je overitev", "Credentials" : "Poverila", + "SMTP Login" : "Prijava SMTP", "SMTP Password" : "Geslo SMTP", "Save" : "Shrani", "Test and verify email settings" : "Preizkusi in overi nastavitve elektronske pošte", @@ -698,6 +741,7 @@ "User management settings" : "Nastavitve upravljanja z računi uporabnikov", "Send welcome email to new users" : "Pošlji sporočilo novim uporabnikom", "Creating group …" : "Poteka ustvarjanje skupine ...", + "User group: {group}" : "Skupina uporabnikov: {group}", "Nextcloud help resources" : "Viri pomoči za okolje Nextcloud" },"pluralForm" :"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);" }
\ No newline at end of file diff --git a/apps/settings/l10n/sr.js b/apps/settings/l10n/sr.js index d080e4382b5..45df6be8b1f 100644 --- a/apps/settings/l10n/sr.js +++ b/apps/settings/l10n/sr.js @@ -815,6 +815,7 @@ OC.L10N.register( "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Присутни су неки увезени кориснички SSL сертификати који се више не користе у Nextcloud 21. Могу да се увезу из командне линије извршавањем команде „occ security:certificates:import”. Њихове путање унутар директоријума са подацима су приказане испод.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Пронађени су неисправни UUID бројеви LDAP корисника или група. Молимо вас да ревидирате своја „Премости UUID детекцију\" подешавања у Експерт делу LDAP конфигурације и употребите „occ ldap:update-uuid” да их ажурирате.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "DAV синхронизација системског адресара се још увек није покренула јер ваша инстанца има више од 1000 корисника или јер је дошло до грешке. Молимо вас да га ручно покренете командом occ dav:sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "У табели за распоред објеката имате више од 50 000 редова. Молимо вас да покренете скупе послове поправке са occ maintenance:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Користи се MariaDB верзије „%s”. Nextcloud 21 и новији не подржавају ову верзију и захтевају MariaDB 10.2 или новију.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Користи се MySQL верзије „%s”. Nextcloud 21 и новији не подржавају ову верзију и захтевају MySQL 8.0 или MariaDB 10.2 или новију.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Користи се PostgreSQL верзије „%s”. Nextcloud 21 и новији не подржавају ову верзију и захтевају PostgreSQL 9.6 или новији.", diff --git a/apps/settings/l10n/sr.json b/apps/settings/l10n/sr.json index f2826edbb8d..1e53a6dfdbd 100644 --- a/apps/settings/l10n/sr.json +++ b/apps/settings/l10n/sr.json @@ -813,6 +813,7 @@ "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Присутни су неки увезени кориснички SSL сертификати који се више не користе у Nextcloud 21. Могу да се увезу из командне линије извршавањем команде „occ security:certificates:import”. Њихове путање унутар директоријума са подацима су приказане испод.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Пронађени су неисправни UUID бројеви LDAP корисника или група. Молимо вас да ревидирате своја „Премости UUID детекцију\" подешавања у Експерт делу LDAP конфигурације и употребите „occ ldap:update-uuid” да их ажурирате.", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "DAV синхронизација системског адресара се још увек није покренула јер ваша инстанца има више од 1000 корисника или јер је дошло до грешке. Молимо вас да га ручно покренете командом occ dav:sync-system-addressbook.", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "У табели за распоред објеката имате више од 50 000 редова. Молимо вас да покренете скупе послове поправке са occ maintenance:repair --include-expensive", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Користи се MariaDB верзије „%s”. Nextcloud 21 и новији не подржавају ову верзију и захтевају MariaDB 10.2 или новију.", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Користи се MySQL верзије „%s”. Nextcloud 21 и новији не подржавају ову верзију и захтевају MySQL 8.0 или MariaDB 10.2 или новију.", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Користи се PostgreSQL верзије „%s”. Nextcloud 21 и новији не подржавају ову верзију и захтевају PostgreSQL 9.6 или новији.", diff --git a/apps/settings/l10n/zh_HK.js b/apps/settings/l10n/zh_HK.js index 33abfb57ac4..4ca98f4dfea 100644 --- a/apps/settings/l10n/zh_HK.js +++ b/apps/settings/l10n/zh_HK.js @@ -264,6 +264,7 @@ OC.L10N.register( "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "「唯讀設定檔」已經啟用,這樣可以防止來自網頁端的設定操作,每次需要更改設定時,都需要手動將設定檔暫時改為可讀寫。", "Nextcloud configuration file is writable" : "Nextcloud 配置檔案可寫", "Scheduling objects table size" : "調度物件數據庫表大小", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "計劃對象表中有多過 %s 行。請透過 occ Maintenance:repair --include-expensive 運行昂貴的修復作業。", "Scheduling objects table size is within acceptable range." : "調度物件數據庫表大小在可接受的範圍內。", "HTTP headers" : "HTTP 標頭", "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- `%1$s` HTTP 標頭並非設定為 `%2$s`。部份功能可能無法正常運作,建議調整此項設定。", @@ -310,7 +311,10 @@ OC.L10N.register( "Profile information" : "簡介資訊", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "個人資料圖片、全名、電郵地址、電話號碼、地址、網站、Twitter、組織、角色、標題、傳記以及您的個人資料是否已啟用", "Nextcloud settings" : "Nextcloud 設定", + "Unified task processing" : "統一任務處理", + "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "人工智能任務可以由不同的應用程式來實現。 您可以在此處設置哪個應用程式應用於哪個任務。", "Task:" : "任務︰", + "None of your currently installed apps provide Task processing functionality" : "您當前安裝的應用程式均不提供任務處理功能", "Machine translation" : "機器翻譯", "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "機器翻譯可以通過不同的應用程序來實現。 您可以在此處定義當前安裝的機器翻譯應用程式的優先級。", "Speech-To-Text" : "音頻轉文字", @@ -811,6 +815,7 @@ OC.L10N.register( "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "存在一些用戶匯入的SSL證書,這些在Nextcloud 21中不再使用。可以通過“ occ security:certificates:import”命令在命令行上將其導入。它們在數據目錄中的路徑如下所示。", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP 用戶或群組的 UUID 無效。請查看 LDAP 配置專家部分中的“覆蓋 UUID 檢測”設置,並使用“occ ldap:update-uuid”更新它們。", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "DAV 系統通訊錄同步尚未執行,因為您的實例有超過 1000 個用戶,或是因為遇到錯誤。請透過 occ dav:sync-system-addressbook 手動執行。", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "調度物件數據庫表中超過五萬列。請透過 occ maintenance:repair --include-expensive 執行昂貴的修復作業", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "正在使用 MariaDB 版本「%s」。Nextcloud 21 及更新版本不再支援此版本,並需要 MariaDB 10.2 或更新版本。", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "正在使用 MySQL 版本「%s」。Nextcloud 21 及更新版本不再支援此版本,並需要 MySQL 8.0 或 MariaDB 10.2 或更新版本。", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "正在使用 PostgreSQL 版本「%s」。Nextcloud 21 及更新版本不再支援此版本,並需要 PostgreSQL 9.6 或更新版本。", diff --git a/apps/settings/l10n/zh_HK.json b/apps/settings/l10n/zh_HK.json index a4f578da12d..68891cd1e0e 100644 --- a/apps/settings/l10n/zh_HK.json +++ b/apps/settings/l10n/zh_HK.json @@ -262,6 +262,7 @@ "The read-only config has been enabled. This prevents setting some configurations via the web-interface. Furthermore, the file needs to be made writable manually for every update." : "「唯讀設定檔」已經啟用,這樣可以防止來自網頁端的設定操作,每次需要更改設定時,都需要手動將設定檔暫時改為可讀寫。", "Nextcloud configuration file is writable" : "Nextcloud 配置檔案可寫", "Scheduling objects table size" : "調度物件數據庫表大小", + "You have more than %s rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive." : "計劃對象表中有多過 %s 行。請透過 occ Maintenance:repair --include-expensive 運行昂貴的修復作業。", "Scheduling objects table size is within acceptable range." : "調度物件數據庫表大小在可接受的範圍內。", "HTTP headers" : "HTTP 標頭", "- The `%1$s` HTTP header is not set to `%2$s`. Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "- `%1$s` HTTP 標頭並非設定為 `%2$s`。部份功能可能無法正常運作,建議調整此項設定。", @@ -308,7 +309,10 @@ "Profile information" : "簡介資訊", "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "個人資料圖片、全名、電郵地址、電話號碼、地址、網站、Twitter、組織、角色、標題、傳記以及您的個人資料是否已啟用", "Nextcloud settings" : "Nextcloud 設定", + "Unified task processing" : "統一任務處理", + "AI tasks can be implemented by different apps. Here you can set which app should be used for which task." : "人工智能任務可以由不同的應用程式來實現。 您可以在此處設置哪個應用程式應用於哪個任務。", "Task:" : "任務︰", + "None of your currently installed apps provide Task processing functionality" : "您當前安裝的應用程式均不提供任務處理功能", "Machine translation" : "機器翻譯", "Machine translation can be implemented by different apps. Here you can define the precedence of the machine translation apps you have installed at the moment." : "機器翻譯可以通過不同的應用程序來實現。 您可以在此處定義當前安裝的機器翻譯應用程式的優先級。", "Speech-To-Text" : "音頻轉文字", @@ -809,6 +813,7 @@ "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "存在一些用戶匯入的SSL證書,這些在Nextcloud 21中不再使用。可以通過“ occ security:certificates:import”命令在命令行上將其導入。它們在數據目錄中的路徑如下所示。", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "LDAP 用戶或群組的 UUID 無效。請查看 LDAP 配置專家部分中的“覆蓋 UUID 檢測”設置,並使用“occ ldap:update-uuid”更新它們。", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "DAV 系統通訊錄同步尚未執行,因為您的實例有超過 1000 個用戶,或是因為遇到錯誤。請透過 occ dav:sync-system-addressbook 手動執行。", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "調度物件數據庫表中超過五萬列。請透過 occ maintenance:repair --include-expensive 執行昂貴的修復作業", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "正在使用 MariaDB 版本「%s」。Nextcloud 21 及更新版本不再支援此版本,並需要 MariaDB 10.2 或更新版本。", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "正在使用 MySQL 版本「%s」。Nextcloud 21 及更新版本不再支援此版本,並需要 MySQL 8.0 或 MariaDB 10.2 或更新版本。", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "正在使用 PostgreSQL 版本「%s」。Nextcloud 21 及更新版本不再支援此版本,並需要 PostgreSQL 9.6 或更新版本。", diff --git a/apps/settings/l10n/zh_TW.js b/apps/settings/l10n/zh_TW.js index 0b3b3809cec..25faa409bdd 100644 --- a/apps/settings/l10n/zh_TW.js +++ b/apps/settings/l10n/zh_TW.js @@ -815,6 +815,7 @@ OC.L10N.register( "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "有一些使用者匯入的 SSL 證書,這些在 Nextcloud 21 不再能運作。它們可以透過命令列執行 \"occ security:certificates:import\" 指令來匯入。它們在資料目錄中的路徑如下所示。", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "找到無效的 LDAP 使用者或群組 UUID。請審閱您在 LDAP 專家設定中的「覆寫 UUID 偵測」設定,並使用「occ ldap:update-uuid」來更新它們。", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "DAV 系統通訊錄同步尚未執行,因為您的站台有超過 1000 個使用者,或是因為遇到錯誤。請透過呼叫 occ dav:sync-system-addressbook 手動執行。", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "調度物件資料表中超過五萬列。請透過 occ maintenance:repair --include-expensive 執行昂貴的修復作業", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "正在使用 MariaDB 版本「%s」。Nextcloud 21 或更新版本不支援此版本,並需要 MariaDB 10.2 或更新版本。", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "正在使用 MySQL 版本「%s」。Nextcloud 21 或更新版本不支援此版本,並需要 MySQL 8.0 或 MariaDB 10.2 或更新版本。", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "正在使用 PostgreSQL 版本「%s」。Nextcloud 21 或更新版本不支援此版本,並需要 PostgreSQL 9.6 或更新版本。", diff --git a/apps/settings/l10n/zh_TW.json b/apps/settings/l10n/zh_TW.json index ad03a13baaf..43f831996aa 100644 --- a/apps/settings/l10n/zh_TW.json +++ b/apps/settings/l10n/zh_TW.json @@ -813,6 +813,7 @@ "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "有一些使用者匯入的 SSL 證書,這些在 Nextcloud 21 不再能運作。它們可以透過命令列執行 \"occ security:certificates:import\" 指令來匯入。它們在資料目錄中的路徑如下所示。", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "找到無效的 LDAP 使用者或群組 UUID。請審閱您在 LDAP 專家設定中的「覆寫 UUID 偵測」設定,並使用「occ ldap:update-uuid」來更新它們。", "The DAV system address book sync has not run yet as your instance has more than 1000 users or because an error occured. Please run it manually by calling occ dav:sync-system-addressbook." : "DAV 系統通訊錄同步尚未執行,因為您的站台有超過 1000 個使用者,或是因為遇到錯誤。請透過呼叫 occ dav:sync-system-addressbook 手動執行。", + "You have more than 50 000 rows in the scheduling objects table. Please run the expensive repair jobs via occ maintenance:repair --include-expensive" : "調度物件資料表中超過五萬列。請透過 occ maintenance:repair --include-expensive 執行昂貴的修復作業", "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "正在使用 MariaDB 版本「%s」。Nextcloud 21 或更新版本不支援此版本,並需要 MariaDB 10.2 或更新版本。", "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "正在使用 MySQL 版本「%s」。Nextcloud 21 或更新版本不支援此版本,並需要 MySQL 8.0 或 MariaDB 10.2 或更新版本。", "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "正在使用 PostgreSQL 版本「%s」。Nextcloud 21 或更新版本不支援此版本,並需要 PostgreSQL 9.6 或更新版本。", diff --git a/apps/theming/lib/Service/ThemesService.php b/apps/theming/lib/Service/ThemesService.php index 0fb6cee6824..d080752a032 100644 --- a/apps/theming/lib/Service/ThemesService.php +++ b/apps/theming/lib/Service/ThemesService.php @@ -45,7 +45,7 @@ class ThemesService { private LoggerInterface $logger, private DefaultTheme $defaultTheme, LightTheme $lightTheme, - DarkTheme $darkTheme, + private DarkTheme $darkTheme, HighContrastTheme $highContrastTheme, DarkHighContrastTheme $darkHighContrastTheme, DyslexiaFont $dyslexiaFont) { @@ -76,9 +76,15 @@ class ThemesService { } $defaultTheme = $this->themesProviders[$this->defaultTheme->getId()]; + $darkTheme = $this->themesProviders[$this->darkTheme->getId()]; $theme = $this->themesProviders[$enforcedTheme]; return [ + // Leave the default theme as a fallback $defaultTheme->getId() => $defaultTheme, + // Make sure we also have the dark theme to allow apps + // to scope sections of their UI to the dark theme + $darkTheme->getId() => $darkTheme, + // Finally, the enforced theme $theme->getId() => $theme, ]; } diff --git a/apps/theming/src/components/ItemPreview.vue b/apps/theming/src/components/ItemPreview.vue index 5f817d04f49..64b88afb224 100644 --- a/apps/theming/src/components/ItemPreview.vue +++ b/apps/theming/src/components/ItemPreview.vue @@ -7,7 +7,10 @@ <span v-if="enforced" class="theming__preview-warning" role="note"> {{ t('theming', 'Theme selection is enforced') }} </span> - <NcCheckboxRadioSwitch class="theming__preview-toggle" + + <!-- Only show checkbox if we can change themes --> + <NcCheckboxRadioSwitch v-show="!enforced" + class="theming__preview-toggle" :checked.sync="checked" :disabled="enforced" :name="name" @@ -67,6 +70,10 @@ export default { return this.selected }, set(checked) { + if (this.enforced) { + return + } + console.debug('Changed theme', this.theme.id, checked) // If this is a radio, we can only enable @@ -83,6 +90,10 @@ export default { methods: { onToggle() { + if (this.enforced) { + return + } + if (this.switchType === 'radio') { this.checked = true return diff --git a/apps/updatenotification/l10n/ru.js b/apps/updatenotification/l10n/ru.js index 2bd126ec277..90dbf481257 100644 --- a/apps/updatenotification/l10n/ru.js +++ b/apps/updatenotification/l10n/ru.js @@ -13,6 +13,7 @@ OC.L10N.register( "Update to {serverAndVersion} is available." : "Доступно обновление до версии {serverAndVersion}.", "Update for {app} to version %s is available." : "Для приложения {app} доступно обновление до версии %s.", "Update notification" : "Уведомление об обновлении", + "What's new in {app} {version}" : "Новшества {app} {version}", "Give feedback" : "Обратная связь", "Get started" : "Начать", "Update" : "Обновление", @@ -51,6 +52,7 @@ OC.L10N.register( "A pre-release version only for testing new features, not for production environments." : "Предрелизная версия, предназначенная только для тестирования новых возможностей.", "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["У <strong>%n</strong> приложения нет версии, совместимой с этой версией Nextcloud.","У <strong>%n</strong> приложений нет версии, совместимой с этой версией Nextcloud.","У <strong>%n</strong> приложений нет версии, совместимой с этой версией Nextcloud.","У <strong>%n</strong> приложений нет версии, совместимой с этой версией Nextcloud."], "Changelog for app {app}" : "Журнал изменений приложения «{app}»", + "What's new in {app} version {version}" : "Новшества {app} версии {version}", "Update to %1$s is available." : "Доступно обновление до версии %1$s.", "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Показывает уведомления об обновлениях для Nextcloud и обеспечивает систему обновления технологией единого входа (SSO).", "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Обратите внимание, что установка обновления с использованием веб-интерфейса не рекомендуется при наличии более ста пользователей. В таком случае желательно использовать обновление с использованием командной строки.", diff --git a/apps/updatenotification/l10n/ru.json b/apps/updatenotification/l10n/ru.json index bb0dde593b1..fc164b5ea21 100644 --- a/apps/updatenotification/l10n/ru.json +++ b/apps/updatenotification/l10n/ru.json @@ -11,6 +11,7 @@ "Update to {serverAndVersion} is available." : "Доступно обновление до версии {serverAndVersion}.", "Update for {app} to version %s is available." : "Для приложения {app} доступно обновление до версии %s.", "Update notification" : "Уведомление об обновлении", + "What's new in {app} {version}" : "Новшества {app} {version}", "Give feedback" : "Обратная связь", "Get started" : "Начать", "Update" : "Обновление", @@ -49,6 +50,7 @@ "A pre-release version only for testing new features, not for production environments." : "Предрелизная версия, предназначенная только для тестирования новых возможностей.", "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["У <strong>%n</strong> приложения нет версии, совместимой с этой версией Nextcloud.","У <strong>%n</strong> приложений нет версии, совместимой с этой версией Nextcloud.","У <strong>%n</strong> приложений нет версии, совместимой с этой версией Nextcloud.","У <strong>%n</strong> приложений нет версии, совместимой с этой версией Nextcloud."], "Changelog for app {app}" : "Журнал изменений приложения «{app}»", + "What's new in {app} version {version}" : "Новшества {app} версии {version}", "Update to %1$s is available." : "Доступно обновление до версии %1$s.", "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Показывает уведомления об обновлениях для Nextcloud и обеспечивает систему обновления технологией единого входа (SSO).", "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Обратите внимание, что установка обновления с использованием веб-интерфейса не рекомендуется при наличии более ста пользователей. В таком случае желательно использовать обновление с использованием командной строки.", diff --git a/apps/weather_status/l10n/vi.js b/apps/weather_status/l10n/vi.js index 507c1ca3327..d5c77cd2d02 100644 --- a/apps/weather_status/l10n/vi.js +++ b/apps/weather_status/l10n/vi.js @@ -14,6 +14,8 @@ OC.L10N.register( "{temperature} {unit} clear sky" : "{temperature} {unit} trời quang", "{temperature} {unit} cloudy later today" : "Trời nhiều mây vào cuối ngày hôm nay", "{temperature} {unit} cloudy" : "{temperature} {unit} nhiều mây", + "{temperature} {unit} fair weather later today" : "{temperature}{unit}thời tiết đẹp vào cuối ngày hôm nay", + "{temperature} {unit} fair weather" : "{temperature}{unit}thời tiết đẹp", "{temperature} {unit} foggy" : "{temperature} {unit} sương mù", "{temperature} {unit} light rainfall" : "{temperature} {unit} mưa nhẹ", "More weather for {adr}" : "Thêm thông tin thời tiết cho {adr}", diff --git a/apps/weather_status/l10n/vi.json b/apps/weather_status/l10n/vi.json index 2bb34afd129..5e8217a3d56 100644 --- a/apps/weather_status/l10n/vi.json +++ b/apps/weather_status/l10n/vi.json @@ -12,6 +12,8 @@ "{temperature} {unit} clear sky" : "{temperature} {unit} trời quang", "{temperature} {unit} cloudy later today" : "Trời nhiều mây vào cuối ngày hôm nay", "{temperature} {unit} cloudy" : "{temperature} {unit} nhiều mây", + "{temperature} {unit} fair weather later today" : "{temperature}{unit}thời tiết đẹp vào cuối ngày hôm nay", + "{temperature} {unit} fair weather" : "{temperature}{unit}thời tiết đẹp", "{temperature} {unit} foggy" : "{temperature} {unit} sương mù", "{temperature} {unit} light rainfall" : "{temperature} {unit} mưa nhẹ", "More weather for {adr}" : "Thêm thông tin thời tiết cho {adr}", diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index c5af569258f..ace458843e7 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -1605,11 +1605,6 @@ <code>string</code> </InvalidReturnType> </file> - <file src="apps/workflowengine/lib/Check/FileSystemTags.php"> - <UndefinedDocblockClass> - <code><![CDATA[$this->storage]]></code> - </UndefinedDocblockClass> - </file> <file src="apps/workflowengine/lib/Check/RequestRemoteAddress.php"> <InvalidArgument> <code>$decodedValue[1]</code> @@ -3323,9 +3318,6 @@ </MoreSpecificReturnType> </file> <file src="lib/private/Streamer.php"> - <InvalidArgument> - <code>$stream</code> - </InvalidArgument> <UndefinedInterfaceMethod> <code>get</code> </UndefinedInterfaceMethod> diff --git a/core/l10n/ar.js b/core/l10n/ar.js index 08d58ed35a6..ce7bc924de6 100644 --- a/core/l10n/ar.js +++ b/core/l10n/ar.js @@ -43,6 +43,7 @@ OC.L10N.register( "Task not found" : "تعذّر العثور على المُهِمَّة", "Internal error" : "خطأ داخلي", "Not found" : "غير موجود", + "Bad request" : "طلب غير جيد", "Requested task type does not exist" : "لا توجد مهام من النوع المطلوب", "Necessary language model provider is not available" : "مزود نموذج اللغة language model provider ضروري لكنه غير متوفر", "No text to image provider is available" : "لا يوجد أي مٌزوِّد لتحويل النصوص إلى صور", diff --git a/core/l10n/ar.json b/core/l10n/ar.json index 6e7efb96ebd..135aec3fb5b 100644 --- a/core/l10n/ar.json +++ b/core/l10n/ar.json @@ -41,6 +41,7 @@ "Task not found" : "تعذّر العثور على المُهِمَّة", "Internal error" : "خطأ داخلي", "Not found" : "غير موجود", + "Bad request" : "طلب غير جيد", "Requested task type does not exist" : "لا توجد مهام من النوع المطلوب", "Necessary language model provider is not available" : "مزود نموذج اللغة language model provider ضروري لكنه غير متوفر", "No text to image provider is available" : "لا يوجد أي مٌزوِّد لتحويل النصوص إلى صور", diff --git a/core/l10n/de_DE.js b/core/l10n/de_DE.js index be39ba3818b..01381334b57 100644 --- a/core/l10n/de_DE.js +++ b/core/l10n/de_DE.js @@ -43,6 +43,7 @@ OC.L10N.register( "Task not found" : "Aufgabe nicht gefunden", "Internal error" : "Interner Fehler", "Not found" : "Nicht gefunden", + "Bad request" : "Fehlerhafte Anfrage", "Requested task type does not exist" : "Angeforderter Aufgabentyp existiert nicht", "Necessary language model provider is not available" : "Erforderlicher Sprachmodellanbieter ist nicht verfügbar", "No text to image provider is available" : "Es ist kein Text-zu-Bild-Anbieter verfügbar", diff --git a/core/l10n/de_DE.json b/core/l10n/de_DE.json index 0a30f372dbd..b27db7cee07 100644 --- a/core/l10n/de_DE.json +++ b/core/l10n/de_DE.json @@ -41,6 +41,7 @@ "Task not found" : "Aufgabe nicht gefunden", "Internal error" : "Interner Fehler", "Not found" : "Nicht gefunden", + "Bad request" : "Fehlerhafte Anfrage", "Requested task type does not exist" : "Angeforderter Aufgabentyp existiert nicht", "Necessary language model provider is not available" : "Erforderlicher Sprachmodellanbieter ist nicht verfügbar", "No text to image provider is available" : "Es ist kein Text-zu-Bild-Anbieter verfügbar", diff --git a/core/l10n/en_GB.js b/core/l10n/en_GB.js index 438a4e63fd0..64e456f7bd5 100644 --- a/core/l10n/en_GB.js +++ b/core/l10n/en_GB.js @@ -43,6 +43,7 @@ OC.L10N.register( "Task not found" : "Task not found", "Internal error" : "Internal error", "Not found" : "Not found", + "Bad request" : "Bad request", "Requested task type does not exist" : "Requested task type does not exist", "Necessary language model provider is not available" : "Necessary language model provider is not available", "No text to image provider is available" : "No text to image provider is available", diff --git a/core/l10n/en_GB.json b/core/l10n/en_GB.json index 72ef2fc3a1b..300e3973ae7 100644 --- a/core/l10n/en_GB.json +++ b/core/l10n/en_GB.json @@ -41,6 +41,7 @@ "Task not found" : "Task not found", "Internal error" : "Internal error", "Not found" : "Not found", + "Bad request" : "Bad request", "Requested task type does not exist" : "Requested task type does not exist", "Necessary language model provider is not available" : "Necessary language model provider is not available", "No text to image provider is available" : "No text to image provider is available", diff --git a/core/l10n/ga.js b/core/l10n/ga.js index 163dc0a0b6e..8b46a42b15d 100644 --- a/core/l10n/ga.js +++ b/core/l10n/ga.js @@ -43,6 +43,7 @@ OC.L10N.register( "Task not found" : "Níor aimsíodh an tasc", "Internal error" : "Earráid inmheánach", "Not found" : "Ní bhfuarthas", + "Bad request" : "Drochiarratas", "Requested task type does not exist" : "Níl an cineál taisc iarrtha ann", "Necessary language model provider is not available" : "Níl soláthraí múnla teanga riachtanach ar fáil", "No text to image provider is available" : "Níl aon soláthraí téacs go híomhá ar fáil", diff --git a/core/l10n/ga.json b/core/l10n/ga.json index 2621ffe0814..e736466712c 100644 --- a/core/l10n/ga.json +++ b/core/l10n/ga.json @@ -41,6 +41,7 @@ "Task not found" : "Níor aimsíodh an tasc", "Internal error" : "Earráid inmheánach", "Not found" : "Ní bhfuarthas", + "Bad request" : "Drochiarratas", "Requested task type does not exist" : "Níl an cineál taisc iarrtha ann", "Necessary language model provider is not available" : "Níl soláthraí múnla teanga riachtanach ar fáil", "No text to image provider is available" : "Níl aon soláthraí téacs go híomhá ar fáil", diff --git a/core/l10n/gl.js b/core/l10n/gl.js index d7ff3cb6328..5da635bfee7 100644 --- a/core/l10n/gl.js +++ b/core/l10n/gl.js @@ -43,6 +43,7 @@ OC.L10N.register( "Task not found" : "Non se atopou a tarefa", "Internal error" : "Produciuse un erro interno", "Not found" : "Non atopado", + "Bad request" : "Solicitude incorrecta", "Requested task type does not exist" : "O tipo de tarefa solicitado non existe", "Necessary language model provider is not available" : "O provedor de modelos de linguaxe necesario non está dispoñíbel", "No text to image provider is available" : "Non hai ningún provedor de texto a imaxe dispoñíbel", diff --git a/core/l10n/gl.json b/core/l10n/gl.json index 71f234635e1..ed2f1f80f43 100644 --- a/core/l10n/gl.json +++ b/core/l10n/gl.json @@ -41,6 +41,7 @@ "Task not found" : "Non se atopou a tarefa", "Internal error" : "Produciuse un erro interno", "Not found" : "Non atopado", + "Bad request" : "Solicitude incorrecta", "Requested task type does not exist" : "O tipo de tarefa solicitado non existe", "Necessary language model provider is not available" : "O provedor de modelos de linguaxe necesario non está dispoñíbel", "No text to image provider is available" : "Non hai ningún provedor de texto a imaxe dispoñíbel", diff --git a/core/l10n/nb.js b/core/l10n/nb.js index 9e010f7c2b7..7325def0538 100644 --- a/core/l10n/nb.js +++ b/core/l10n/nb.js @@ -43,6 +43,7 @@ OC.L10N.register( "Task not found" : "Oppgave ikke funnet", "Internal error" : "Intern feil", "Not found" : "Ikke funnet", + "Bad request" : "Feilaktig forespørsel", "Requested task type does not exist" : "Den forespurte oppgavetypen eskisterer ikke", "Necessary language model provider is not available" : "Nødvendig tilbyder av språkmodell er ikke tilgjengelig", "No text to image provider is available" : "Ingen tilbyder av tekst til bilde er tilgjengelig", diff --git a/core/l10n/nb.json b/core/l10n/nb.json index b644a7aae0f..8dc0a8d421a 100644 --- a/core/l10n/nb.json +++ b/core/l10n/nb.json @@ -41,6 +41,7 @@ "Task not found" : "Oppgave ikke funnet", "Internal error" : "Intern feil", "Not found" : "Ikke funnet", + "Bad request" : "Feilaktig forespørsel", "Requested task type does not exist" : "Den forespurte oppgavetypen eskisterer ikke", "Necessary language model provider is not available" : "Nødvendig tilbyder av språkmodell er ikke tilgjengelig", "No text to image provider is available" : "Ingen tilbyder av tekst til bilde er tilgjengelig", diff --git a/core/l10n/zh_HK.js b/core/l10n/zh_HK.js index 990748f7ef8..5f7bb4f1f57 100644 --- a/core/l10n/zh_HK.js +++ b/core/l10n/zh_HK.js @@ -43,6 +43,7 @@ OC.L10N.register( "Task not found" : "找不到任務", "Internal error" : "內部錯誤", "Not found" : "未找到", + "Bad request" : "請求無效", "Requested task type does not exist" : "請求的任務類型不存在", "Necessary language model provider is not available" : "沒有必要的語言模型提供者", "No text to image provider is available" : "沒有可用的文字轉影像提供者", diff --git a/core/l10n/zh_HK.json b/core/l10n/zh_HK.json index a80f72ecfd0..fb419364f4b 100644 --- a/core/l10n/zh_HK.json +++ b/core/l10n/zh_HK.json @@ -41,6 +41,7 @@ "Task not found" : "找不到任務", "Internal error" : "內部錯誤", "Not found" : "未找到", + "Bad request" : "請求無效", "Requested task type does not exist" : "請求的任務類型不存在", "Necessary language model provider is not available" : "沒有必要的語言模型提供者", "No text to image provider is available" : "沒有可用的文字轉影像提供者", diff --git a/dist/theming-personal-theming.js b/dist/theming-personal-theming.js index 1769ce44394..51ca688fadc 100644 --- a/dist/theming-personal-theming.js +++ b/dist/theming-personal-theming.js @@ -1,3 +1,3 @@ /*! For license information please see theming-personal-theming.js.LICENSE.txt */ -(()=>{var e,n,r,o={34314:(e,n,r)=>{"use strict";var o=r(21777),a=r(85471),i=r(63814),l=r(32981),s=r(26287),c=r(32073),u=r(88837),d=r(85168),p=(r(93525),r(17334)),h=r.n(p),f=r(69606),g=r(54332),m=r(64866),v=r.n(m),b=r(85338),y=r(24325);const A={name:"ImageEditIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var _=r(14486);const w=(0,_.A)(A,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon image-edit-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var C=r(96763);const k=(0,l.C)("theming","backgroundImage"),x=(0,l.C)("theming","shippedBackgrounds"),S=(0,l.C)("theming","themingDefaultBackground"),D=(0,l.C)("theming","defaultShippedBackground"),E=t=>(0,i.fg)("theming","","img/background/")+t,T={name:"BackgroundSettings",components:{Check:b.A,Close:y.A,ImageEdit:w,NcButton:g.A,NcColorPicker:f.N},data:()=>({loading:!1,Theming:(0,l.C)("theming","data",{}),backgroundImage:k}),computed:{shippedBackgrounds(){return Object.keys(x).map((t=>({name:t,url:E(t),preview:E("preview/"+t),details:x[t]}))).filter((t=>!(!this.isGlobalBackgroundDeleted&&!this.isGlobalBackgroundDefault)||t.name!==D))},isGlobalBackgroundDefault:()=>!!S,isGlobalBackgroundDeleted:()=>"backgroundColor"===S,isBackgroundDisabled(){return"disabled"===this.backgroundImage||!this.backgroundImage}},methods:{invertTextColor(t){return this.calculateLuma(t)>.6},calculateLuma(t){const[e,n,r]=this.hexToRGB(t);return(.2126*e+.7152*n+.0722*r)/255},hexToRGB(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]:null},async update(t){this.backgroundImage=t.backgroundImage,this.Theming.color=t.backgroundColor,this.$emit("update:background"),this.loading=!1},async setDefault(){this.loading="default";const t=await s.A.post((0,i.Jv)("/apps/theming/background/default"));this.update(t.data)},async setShipped(t){this.loading=t;const e=await s.A.post((0,i.Jv)("/apps/theming/background/shipped"),{value:t});this.update(e.data)},async setFile(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.loading="custom";const n=await s.A.post((0,i.Jv)("/apps/theming/background/custom"),{value:t,color:e});this.update(n.data)},async removeBackground(){this.loading="remove";const t=await s.A.delete((0,i.Jv)("/apps/theming/background/custom"));this.update(t.data)},async pickColor(t){var e,n;this.loading="color";const r=(null==t||null===(e=t.target)||void 0===e||null===(e=e.dataset)||void 0===e?void 0:e.color)||(null===(n=this.Theming)||void 0===n?void 0:n.color)||"#0082c9",o=await s.A.post((0,i.Jv)("/apps/theming/background/color"),{color:r});this.update(o.data)},debouncePickColor:h()((function(){this.pickColor(...arguments)}),200),pickFile(){(0,d.a1)(t("theming","Select a background from your files")).allowDirectories(!1).setMimeTypeFilter(["image/png","image/gif","image/jpeg","image/svg+xml","image/svg"]).setMultiSelect(!1).addButton({id:"select",label:t("theming","Select background"),callback:t=>{var e;this.applyFile(null===(e=t[0])||void 0===e?void 0:e.path)},type:"primary"}).build().pick()},async applyFile(e){if(!e||"string"!=typeof e||0===e.trim().length||"/"===e)return C.error("No valid background have been selected",{path:e}),void(0,d.Qg)(t("theming","No background has been selected"));this.loading="custom";let n=null,r=null;try{var a;const t=(0,i.dC)("dav/files/"+(0,o.HW)().uid+e);n=await s.A.get(t,{responseType:"blob"});const l=URL.createObjectURL(n.data),c=await this.getColorPaletteFromBlob(l);r=null==c||null===(a=c.DarkVibrant)||void 0===a?void 0:a.hex,this.setFile(e,r),C.debug("Extracted colour",r,"from custom image",e,c)}catch(t){this.setFile(e),C.error("Unable to extract colour from custom image",{error:t,path:e,response:n,color:r})}},getColorPaletteFromBlob:t=>new Promise(((e,n)=>{new(v())(t).getPalette(((t,r)=>{t&&n(t),e(r)}))}))}};var O=r(85072),I=r.n(O),j=r(97825),M=r.n(j),P=r(77659),L=r.n(P),N=r(55056),B=r.n(N),F=r(10540),R=r.n(F),q=r(41113),H=r.n(q),U=r(49370),V={};V.styleTagTransform=H(),V.setAttributes=B(),V.insert=L().bind(null,"head"),V.domAPI=M(),V.insertStyleElement=R(),I()(U.A,V),U.A&&U.A.locals&&U.A.locals;const z=(0,_.A)(T,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"background-selector",attrs:{"data-user-theming-background-settings":""}},[e("button",{class:{"icon-loading":"custom"===t.loading,"background background__filepicker":!0,"background--active":"custom"===t.backgroundImage},attrs:{"aria-pressed":"custom"===t.backgroundImage,"data-color-bright":t.invertTextColor(t.Theming.color),"data-user-theming-background-custom":"",tabindex:"0"},on:{click:t.pickFile}},[t._v("\n\t\t"+t._s(t.t("theming","Custom background"))+"\n\t\t"),"custom"!==t.backgroundImage?e("ImageEdit",{attrs:{size:26}}):t._e(),t._v(" "),e("Check",{attrs:{size:44}})],1),t._v(" "),e("button",{class:{"icon-loading":"default"===t.loading,"background background__default":!0,"background--active":"default"===t.backgroundImage},style:{"--border-color":t.Theming.defaultColor},attrs:{"aria-pressed":"default"===t.backgroundImage,"data-color-bright":t.invertTextColor(t.Theming.defaultColor),"data-user-theming-background-default":"",tabindex:"0"},on:{click:t.setDefault}},[t._v("\n\t\t"+t._s(t.t("theming","Default background"))+"\n\t\t"),e("Check",{attrs:{size:44}})],1),t._v(" "),e("div",{staticClass:"background-color",attrs:{"data-user-theming-background-color":""}},[e("NcColorPicker",{on:{input:t.debouncePickColor},model:{value:t.Theming.color,callback:function(e){t.$set(t.Theming,"color",e)},expression:"Theming.color"}},[e("NcButton",{attrs:{type:"ternary"}},[t._v("\n\t\t\t\t"+t._s(t.t("theming","Change color"))+"\n\t\t\t")])],1)],1),t._v(" "),e("button",{class:{"background background__delete":!0,"background--active":t.isBackgroundDisabled},attrs:{"aria-pressed":t.isBackgroundDisabled,"data-user-theming-background-clear":"",tabindex:"0"},on:{click:t.removeBackground}},[t._v("\n\t\t"+t._s(t.t("theming","No background"))+"\n\t\t"),t.isBackgroundDisabled?t._e():e("Close",{attrs:{size:32}}),t._v(" "),e("Check",{attrs:{size:44}})],1),t._v(" "),t._l(t.shippedBackgrounds,(function(n){return e("button",{key:n.name,class:{"background background__shipped":!0,"icon-loading":t.loading===n.name,"background--active":t.backgroundImage===n.name},style:{backgroundImage:"url("+n.preview+")","--border-color":n.details.primary_color},attrs:{title:n.details.attribution,"aria-label":n.details.description,"aria-pressed":t.backgroundImage===n.name,"data-color-bright":"dark"===n.details.theming,"data-user-theming-background-shipped":n.name,tabindex:"0"},on:{click:function(e){return t.setShipped(n.name)}}},[e("Check",{attrs:{size:44}})],1)}))],2)}),[],!1,null,"1175e65a",null).exports;var W=r(96763);const Y={name:"ItemPreview",components:{NcCheckboxRadioSwitch:c.A},props:{enforced:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},theme:{type:Object,required:!0},type:{type:String,default:""},unique:{type:Boolean,default:!1}},computed:{switchType(){return this.unique?"switch":"radio"},name(){return this.unique?null:this.type},img(){return(0,i.fg)("theming","img",this.theme.id+".jpg")},checked:{get(){return this.selected},set(t){W.debug("Changed theme",this.theme.id,t),this.unique?this.$emit("change",{enabled:!0===t,id:this.theme.id}):this.$emit("change",{enabled:!0,id:this.theme.id})}}},methods:{onToggle(){"radio"!==this.switchType?this.checked=!this.checked:this.checked=!0}}};var G=r(86619),K={};K.styleTagTransform=H(),K.setAttributes=B(),K.insert=L().bind(null,"head"),K.domAPI=M(),K.insertStyleElement=R(),I()(G.A,K),G.A&&G.A.locals&&G.A.locals;const X=(0,_.A)(Y,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"theming__preview",class:"theming__preview--"+t.theme.id},[e("div",{staticClass:"theming__preview-image",style:{backgroundImage:"url("+t.img+")"},on:{click:t.onToggle}}),t._v(" "),e("div",{staticClass:"theming__preview-description"},[e("h3",[t._v(t._s(t.theme.title))]),t._v(" "),e("p",{staticClass:"theming__preview-explanation"},[t._v(t._s(t.theme.description))]),t._v(" "),t.enforced?e("span",{staticClass:"theming__preview-warning",attrs:{role:"note"}},[t._v("\n\t\t\t"+t._s(t.t("theming","Theme selection is enforced"))+"\n\t\t")]):t._e(),t._v(" "),e("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:t.checked,disabled:t.enforced,name:t.name,type:t.switchType},on:{"update:checked":function(e){t.checked=e}}},[t._v("\n\t\t\t"+t._s(t.theme.enableLabel)+"\n\t\t")])],1)])}),[],!1,null,"1a08e35a",null).exports;var $=r(53334),Q=r(13073),J=r(59271);function Z(t){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Z(t)}function tt(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function et(){return et=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},et.apply(this,arguments)}function nt(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable})))),r.forEach((function(e){tt(t,e,n[e])}))}return t}function rt(t){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(t)}var ot=rt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),at=rt(/Edge/i),it=rt(/firefox/i),lt=rt(/safari/i)&&!rt(/chrome/i)&&!rt(/android/i),st=rt(/iP(ad|od|hone)/i),ct=rt(/chrome/i)&&rt(/android/i),ut={capture:!1,passive:!1};function dt(t,e,n){t.addEventListener(e,n,!ot&&ut)}function pt(t,e,n){t.removeEventListener(e,n,!ot&&ut)}function ht(t,e){if(e){if(">"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function ft(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function gt(t,e,n,r){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&ht(t,e):ht(t,e))||r&&t===n)return t;if(t===n)break}while(t=ft(t))}return null}var mt,vt=/\s+/g;function bt(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var r=(" "+t.className+" ").replace(vt," ").replace(" "+e+" "," ");t.className=(r+(n?" "+e:"")).replace(vt," ")}}function yt(t,e,n){var r=t&&t.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in r||-1!==e.indexOf("webkit")||(e="-webkit-"+e),r[e]=n+("string"==typeof n?"":"px")}}function At(t,e){var n="";if("string"==typeof t)n=t;else do{var r=yt(t,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!e&&(t=t.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function _t(t,e,n){if(t){var r=t.getElementsByTagName(e),o=0,a=r.length;if(n)for(;o<a;o++)n(r[o],o);return r}return[]}function wt(){return document.scrollingElement||document.documentElement}function Ct(t,e,n,r,o){if(t.getBoundingClientRect||t===window){var a,i,l,s,c,u,d;if(t!==window&&t!==wt()?(i=(a=t.getBoundingClientRect()).top,l=a.left,s=a.bottom,c=a.right,u=a.height,d=a.width):(i=0,l=0,s=window.innerHeight,c=window.innerWidth,u=window.innerHeight,d=window.innerWidth),(e||n)&&t!==window&&(o=o||t.parentNode,!ot))do{if(o&&o.getBoundingClientRect&&("none"!==yt(o,"transform")||n&&"static"!==yt(o,"position"))){var p=o.getBoundingClientRect();i-=p.top+parseInt(yt(o,"border-top-width")),l-=p.left+parseInt(yt(o,"border-left-width")),s=i+a.height,c=l+a.width;break}}while(o=o.parentNode);if(r&&t!==window){var h=At(o||t),f=h&&h.a,g=h&&h.d;h&&(s=(i/=g)+(u/=g),c=(l/=f)+(d/=f))}return{top:i,left:l,bottom:s,right:c,width:d,height:u}}}function kt(t,e,n){for(var r=Tt(t,!0),o=Ct(t)[e];r;){var a=Ct(r)[n];if(!("top"===n||"left"===n?o>=a:o<=a))return r;if(r===wt())break;r=Tt(r,!1)}return!1}function xt(t,e,n){for(var r=0,o=0,a=t.children;o<a.length;){if("none"!==a[o].style.display&&a[o]!==Oe.ghost&&a[o]!==Oe.dragged&>(a[o],n.draggable,t,!1)){if(r===e)return a[o];r++}o++}return null}function St(t,e){for(var n=t.lastElementChild;n&&(n===Oe.ghost||"none"===yt(n,"display")||e&&!ht(n,e));)n=n.previousElementSibling;return n||null}function Dt(t,e){var n=0;if(!t||!t.parentNode)return-1;for(;t=t.previousElementSibling;)"TEMPLATE"===t.nodeName.toUpperCase()||t===Oe.clone||e&&!ht(t,e)||n++;return n}function Et(t){var e=0,n=0,r=wt();if(t)do{var o=At(t),a=o.a,i=o.d;e+=t.scrollLeft*a,n+=t.scrollTop*i}while(t!==r&&(t=t.parentNode));return[e,n]}function Tt(t,e){if(!t||!t.getBoundingClientRect)return wt();var n=t,r=!1;do{if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var o=yt(n);if(n.clientWidth<n.scrollWidth&&("auto"==o.overflowX||"scroll"==o.overflowX)||n.clientHeight<n.scrollHeight&&("auto"==o.overflowY||"scroll"==o.overflowY)){if(!n.getBoundingClientRect||n===document.body)return wt();if(r||e)return n;r=!0}}}while(n=n.parentNode);return wt()}function Ot(t,e){return Math.round(t.top)===Math.round(e.top)&&Math.round(t.left)===Math.round(e.left)&&Math.round(t.height)===Math.round(e.height)&&Math.round(t.width)===Math.round(e.width)}function It(t,e){return function(){if(!mt){var n=arguments;1===n.length?t.call(this,n[0]):t.apply(this,n),mt=setTimeout((function(){mt=void 0}),e)}}}function jt(t,e,n){t.scrollLeft+=e,t.scrollTop+=n}function Mt(t){var e=window.Polymer,n=window.jQuery||window.Zepto;return e&&e.dom?e.dom(t).cloneNode(!0):n?n(t).clone(!0)[0]:t.cloneNode(!0)}var Pt="Sortable"+(new Date).getTime();var Lt=[],Nt={initializeByDefault:!0},Bt={mount:function(t){for(var e in Nt)Nt.hasOwnProperty(e)&&!(e in t)&&(t[e]=Nt[e]);Lt.push(t)},pluginEvent:function(t,e,n){var r=this;this.eventCanceled=!1,n.cancel=function(){r.eventCanceled=!0};var o=t+"Global";Lt.forEach((function(r){e[r.pluginName]&&(e[r.pluginName][o]&&e[r.pluginName][o](nt({sortable:e},n)),e.options[r.pluginName]&&e[r.pluginName][t]&&e[r.pluginName][t](nt({sortable:e},n)))}))},initializePlugins:function(t,e,n,r){for(var o in Lt.forEach((function(r){var o=r.pluginName;if(t.options[o]||r.initializeByDefault){var a=new r(t,e,t.options);a.sortable=t,a.options=t.options,t[o]=a,et(n,a.defaults)}})),t.options)if(t.options.hasOwnProperty(o)){var a=this.modifyOption(t,o,t.options[o]);void 0!==a&&(t.options[o]=a)}},getEventProperties:function(t,e){var n={};return Lt.forEach((function(r){"function"==typeof r.eventProperties&&et(n,r.eventProperties.call(e[r.pluginName],t))})),n},modifyOption:function(t,e,n){var r;return Lt.forEach((function(o){t[o.pluginName]&&o.optionListeners&&"function"==typeof o.optionListeners[e]&&(r=o.optionListeners[e].call(t[o.pluginName],n))})),r}};var Ft=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r<a.length;r++)n=a[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r<a.length;r++)n=a[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(n,["evt"]);Bt.pluginEvent.bind(Oe)(t,e,nt({dragEl:qt,parentEl:Ht,ghostEl:Ut,rootEl:Vt,nextEl:zt,lastDownEl:Wt,cloneEl:Yt,cloneHidden:Gt,dragStarted:ie,putSortable:Zt,activeSortable:Oe.active,originalEvent:r,oldIndex:Kt,oldDraggableIndex:$t,newIndex:Xt,newDraggableIndex:Qt,hideGhostForTarget:Se,unhideGhostForTarget:De,cloneNowHidden:function(){Gt=!0},cloneNowShown:function(){Gt=!1},dispatchSortableEvent:function(t){Rt({sortable:e,name:t,originalEvent:r})}},o))};function Rt(t){!function(t){var e=t.sortable,n=t.rootEl,r=t.name,o=t.targetEl,a=t.cloneEl,i=t.toEl,l=t.fromEl,s=t.oldIndex,c=t.newIndex,u=t.oldDraggableIndex,d=t.newDraggableIndex,p=t.originalEvent,h=t.putSortable,f=t.extraEventProperties;if(e=e||n&&n[Pt]){var g,m=e.options,v="on"+r.charAt(0).toUpperCase()+r.substr(1);!window.CustomEvent||ot||at?(g=document.createEvent("Event")).initEvent(r,!0,!0):g=new CustomEvent(r,{bubbles:!0,cancelable:!0}),g.to=i||n,g.from=l||n,g.item=o||n,g.clone=a,g.oldIndex=s,g.newIndex=c,g.oldDraggableIndex=u,g.newDraggableIndex=d,g.originalEvent=p,g.pullMode=h?h.lastPutMode:void 0;var b=nt({},f,Bt.getEventProperties(r,e));for(var y in b)g[y]=b[y];n&&n.dispatchEvent(g),m[v]&&m[v].call(e,g)}}(nt({putSortable:Zt,cloneEl:Yt,targetEl:qt,rootEl:Vt,oldIndex:Kt,oldDraggableIndex:$t,newIndex:Xt,newDraggableIndex:Qt},t))}var qt,Ht,Ut,Vt,zt,Wt,Yt,Gt,Kt,Xt,$t,Qt,Jt,Zt,te,ee,ne,re,oe,ae,ie,le,se,ce,ue,de=!1,pe=!1,he=[],fe=!1,ge=!1,me=[],ve=!1,be=[],ye="undefined"!=typeof document,Ae=st,_e=at||ot?"cssFloat":"float",we=ye&&!ct&&!st&&"draggable"in document.createElement("div"),Ce=function(){if(ye){if(ot)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),ke=function(t,e){var n=yt(t),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=xt(t,0,e),a=xt(t,1,e),i=o&&yt(o),l=a&&yt(a),s=i&&parseInt(i.marginLeft)+parseInt(i.marginRight)+Ct(o).width,c=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Ct(a).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&i.float&&"none"!==i.float){var u="left"===i.float?"left":"right";return!a||"both"!==l.clear&&l.clear!==u?"horizontal":"vertical"}return o&&("block"===i.display||"flex"===i.display||"table"===i.display||"grid"===i.display||s>=r&&"none"===n[_e]||a&&"none"===n[_e]&&s+c>r)?"vertical":"horizontal"},xe=function(t){function e(t,n){return function(r,o,a,i){var l=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==t&&(n||l))return!0;if(null==t||!1===t)return!1;if(n&&"clone"===t)return t;if("function"==typeof t)return e(t(r,o,a,i),n)(r,o,a,i);var s=(n?r:o).options.group.name;return!0===t||"string"==typeof t&&t===s||t.join&&t.indexOf(s)>-1}}var n={},r=t.group;r&&"object"==Z(r)||(r={name:r}),n.name=r.name,n.checkPull=e(r.pull,!0),n.checkPut=e(r.put),n.revertClone=r.revertClone,t.group=n},Se=function(){!Ce&&Ut&&yt(Ut,"display","none")},De=function(){!Ce&&Ut&&yt(Ut,"display","")};ye&&document.addEventListener("click",(function(t){if(pe)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),pe=!1,!1}),!0);var Ee=function(t){if(qt){t=t.touches?t.touches[0]:t;var e=(o=t.clientX,a=t.clientY,he.some((function(t){if(!St(t)){var e=Ct(t),n=t[Pt].options.emptyInsertThreshold,r=o>=e.left-n&&o<=e.right+n,l=a>=e.top-n&&a<=e.bottom+n;return n&&r&&l?i=t:void 0}})),i);if(e){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[Pt]._onDragOver(n)}}var o,a,i},Te=function(t){qt&&qt.parentNode[Pt]._isOutsideThisEl(t.target)};function Oe(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=et({},e),t[Pt]=this;var n,r,o={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return ke(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Oe.supportPointer&&"PointerEvent"in window,emptyInsertThreshold:5};for(var a in Bt.initializePlugins(this,t,o),o)!(a in e)&&(e[a]=o[a]);for(var i in xe(e),this)"_"===i.charAt(0)&&"function"==typeof this[i]&&(this[i]=this[i].bind(this));this.nativeDraggable=!e.forceFallback&&we,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?dt(t,"pointerdown",this._onTapStart):(dt(t,"mousedown",this._onTapStart),dt(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(dt(t,"dragover",this),dt(t,"dragenter",this)),he.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),et(this,(r=[],{captureAnimationState:function(){r=[],this.options.animation&&[].slice.call(this.el.children).forEach((function(t){if("none"!==yt(t,"display")&&t!==Oe.ghost){r.push({target:t,rect:Ct(t)});var e=nt({},r[r.length-1].rect);if(t.thisAnimationDuration){var n=At(t,!0);n&&(e.top-=n.f,e.left-=n.e)}t.fromRect=e}}))},addAnimationState:function(t){r.push(t)},removeAnimationState:function(t){r.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var r in e)if(e.hasOwnProperty(r)&&e[r]===t[n][r])return Number(n);return-1}(r,{target:t}),1)},animateAll:function(t){var e=this;if(!this.options.animation)return clearTimeout(n),void("function"==typeof t&&t());var o=!1,a=0;r.forEach((function(t){var n=0,r=t.target,i=r.fromRect,l=Ct(r),s=r.prevFromRect,c=r.prevToRect,u=t.rect,d=At(r,!0);d&&(l.top-=d.f,l.left-=d.e),r.toRect=l,r.thisAnimationDuration&&Ot(s,l)&&!Ot(i,l)&&(u.top-l.top)/(u.left-l.left)==(i.top-l.top)/(i.left-l.left)&&(n=function(t,e,n,r){return Math.sqrt(Math.pow(e.top-t.top,2)+Math.pow(e.left-t.left,2))/Math.sqrt(Math.pow(e.top-n.top,2)+Math.pow(e.left-n.left,2))*r.animation}(u,s,c,e.options)),Ot(l,i)||(r.prevFromRect=i,r.prevToRect=l,n||(n=e.options.animation),e.animate(r,u,l,n)),n&&(o=!0,a=Math.max(a,n),clearTimeout(r.animationResetTimer),r.animationResetTimer=setTimeout((function(){r.animationTime=0,r.prevFromRect=null,r.fromRect=null,r.prevToRect=null,r.thisAnimationDuration=null}),n),r.thisAnimationDuration=n)})),clearTimeout(n),o?n=setTimeout((function(){"function"==typeof t&&t()}),a):"function"==typeof t&&t(),r=[]},animate:function(t,e,n,r){if(r){yt(t,"transition",""),yt(t,"transform","");var o=At(this.el),a=o&&o.a,i=o&&o.d,l=(e.left-n.left)/(a||1),s=(e.top-n.top)/(i||1);t.animatingX=!!l,t.animatingY=!!s,yt(t,"transform","translate3d("+l+"px,"+s+"px,0)"),function(t){t.offsetWidth}(t),yt(t,"transition","transform "+r+"ms"+(this.options.easing?" "+this.options.easing:"")),yt(t,"transform","translate3d(0,0,0)"),"number"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout((function(){yt(t,"transition",""),yt(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1}),r)}}}))}function Ie(t,e,n,r,o,a,i,l){var s,c,u=t[Pt],d=u.options.onMove;return!window.CustomEvent||ot||at?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=r,s.related=o||e,s.relatedRect=a||Ct(e),s.willInsertAfter=l,s.originalEvent=i,t.dispatchEvent(s),d&&(c=d.call(u,s,i)),c}function je(t){t.draggable=!1}function Me(){ve=!1}function Pe(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,r=0;n--;)r+=e.charCodeAt(n);return r.toString(36)}function Le(t){return setTimeout(t,0)}function Ne(t){return clearTimeout(t)}Oe.prototype={constructor:Oe,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(le=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,qt):this.options.direction},_onTapStart:function(t){if(t.cancelable){var e=this,n=this.el,r=this.options,o=r.preventOnFilter,a=t.type,i=t.touches&&t.touches[0]||t.pointerType&&"touch"===t.pointerType&&t,l=(i||t).target,s=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||l,c=r.filter;if(function(t){be.length=0;for(var e=t.getElementsByTagName("input"),n=e.length;n--;){var r=e[n];r.checked&&be.push(r)}}(n),!qt&&!(/mousedown|pointerdown/.test(a)&&0!==t.button||r.disabled||s.isContentEditable||(l=gt(l,r.draggable,n,!1))&&l.animated||Wt===l)){if(Kt=Dt(l),$t=Dt(l,r.draggable),"function"==typeof c){if(c.call(this,t,l,this))return Rt({sortable:e,rootEl:s,name:"filter",targetEl:l,toEl:n,fromEl:n}),Ft("filter",e,{evt:t}),void(o&&t.cancelable&&t.preventDefault())}else if(c&&(c=c.split(",").some((function(r){if(r=gt(s,r.trim(),n,!1))return Rt({sortable:e,rootEl:r,name:"filter",targetEl:l,fromEl:n,toEl:n}),Ft("filter",e,{evt:t}),!0}))))return void(o&&t.cancelable&&t.preventDefault());r.handle&&!gt(s,r.handle,n,!1)||this._prepareDragStart(t,i,l)}}},_prepareDragStart:function(t,e,n){var r,o=this,a=o.el,i=o.options,l=a.ownerDocument;if(n&&!qt&&n.parentNode===a){var s=Ct(n);if(Vt=a,Ht=(qt=n).parentNode,zt=qt.nextSibling,Wt=n,Jt=i.group,Oe.dragged=qt,te={target:qt,clientX:(e||t).clientX,clientY:(e||t).clientY},oe=te.clientX-s.left,ae=te.clientY-s.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,qt.style["will-change"]="all",r=function(){Ft("delayEnded",o,{evt:t}),Oe.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!it&&o.nativeDraggable&&(qt.draggable=!0),o._triggerDragStart(t,e),Rt({sortable:o,name:"choose",originalEvent:t}),bt(qt,i.chosenClass,!0))},i.ignore.split(",").forEach((function(t){_t(qt,t.trim(),je)})),dt(l,"dragover",Ee),dt(l,"mousemove",Ee),dt(l,"touchmove",Ee),dt(l,"mouseup",o._onDrop),dt(l,"touchend",o._onDrop),dt(l,"touchcancel",o._onDrop),it&&this.nativeDraggable&&(this.options.touchStartThreshold=4,qt.draggable=!0),Ft("delayStart",this,{evt:t}),!i.delay||i.delayOnTouchOnly&&!e||this.nativeDraggable&&(at||ot))r();else{if(Oe.eventCanceled)return void this._onDrop();dt(l,"mouseup",o._disableDelayedDrag),dt(l,"touchend",o._disableDelayedDrag),dt(l,"touchcancel",o._disableDelayedDrag),dt(l,"mousemove",o._delayedDragTouchMoveHandler),dt(l,"touchmove",o._delayedDragTouchMoveHandler),i.supportPointer&&dt(l,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(r,i.delay)}}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){qt&&je(qt),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;pt(t,"mouseup",this._disableDelayedDrag),pt(t,"touchend",this._disableDelayedDrag),pt(t,"touchcancel",this._disableDelayedDrag),pt(t,"mousemove",this._delayedDragTouchMoveHandler),pt(t,"touchmove",this._delayedDragTouchMoveHandler),pt(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?dt(document,"pointermove",this._onTouchMove):dt(document,e?"touchmove":"mousemove",this._onTouchMove):(dt(qt,"dragend",this),dt(Vt,"dragstart",this._onDragStart));try{document.selection?Le((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){if(de=!1,Vt&&qt){Ft("dragStarted",this,{evt:e}),this.nativeDraggable&&dt(document,"dragover",Te);var n=this.options;!t&&bt(qt,n.dragClass,!1),bt(qt,n.ghostClass,!0),Oe.active=this,t&&this._appendGhost(),Rt({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(ee){this._lastX=ee.clientX,this._lastY=ee.clientY,Se();for(var t=document.elementFromPoint(ee.clientX,ee.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(ee.clientX,ee.clientY))!==e;)e=t;if(qt.parentNode[Pt]._isOutsideThisEl(t),e)do{if(e[Pt]&&e[Pt]._onDragOver({clientX:ee.clientX,clientY:ee.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break;t=e}while(e=e.parentNode);De()}},_onTouchMove:function(t){if(te){var e=this.options,n=e.fallbackTolerance,r=e.fallbackOffset,o=t.touches?t.touches[0]:t,a=Ut&&At(Ut,!0),i=Ut&&a&&a.a,l=Ut&&a&&a.d,s=Ae&&ue&&Et(ue),c=(o.clientX-te.clientX+r.x)/(i||1)+(s?s[0]-me[0]:0)/(i||1),u=(o.clientY-te.clientY+r.y)/(l||1)+(s?s[1]-me[1]:0)/(l||1);if(!Oe.active&&!de){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))<n)return;this._onDragStart(t,!0)}if(Ut){a?(a.e+=c-(ne||0),a.f+=u-(re||0)):a={a:1,b:0,c:0,d:1,e:c,f:u};var d="matrix(".concat(a.a,",").concat(a.b,",").concat(a.c,",").concat(a.d,",").concat(a.e,",").concat(a.f,")");yt(Ut,"webkitTransform",d),yt(Ut,"mozTransform",d),yt(Ut,"msTransform",d),yt(Ut,"transform",d),ne=c,re=u,ee=o}t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!Ut){var t=this.options.fallbackOnBody?document.body:Vt,e=Ct(qt,!0,Ae,!0,t),n=this.options;if(Ae){for(ue=t;"static"===yt(ue,"position")&&"none"===yt(ue,"transform")&&ue!==document;)ue=ue.parentNode;ue!==document.body&&ue!==document.documentElement?(ue===document&&(ue=wt()),e.top+=ue.scrollTop,e.left+=ue.scrollLeft):ue=wt(),me=Et(ue)}bt(Ut=qt.cloneNode(!0),n.ghostClass,!1),bt(Ut,n.fallbackClass,!0),bt(Ut,n.dragClass,!0),yt(Ut,"transition",""),yt(Ut,"transform",""),yt(Ut,"box-sizing","border-box"),yt(Ut,"margin",0),yt(Ut,"top",e.top),yt(Ut,"left",e.left),yt(Ut,"width",e.width),yt(Ut,"height",e.height),yt(Ut,"opacity","0.8"),yt(Ut,"position",Ae?"absolute":"fixed"),yt(Ut,"zIndex","100000"),yt(Ut,"pointerEvents","none"),Oe.ghost=Ut,t.appendChild(Ut),yt(Ut,"transform-origin",oe/parseInt(Ut.style.width)*100+"% "+ae/parseInt(Ut.style.height)*100+"%")}},_onDragStart:function(t,e){var n=this,r=t.dataTransfer,o=n.options;Ft("dragStart",this,{evt:t}),Oe.eventCanceled?this._onDrop():(Ft("setupClone",this),Oe.eventCanceled||((Yt=Mt(qt)).draggable=!1,Yt.style["will-change"]="",this._hideClone(),bt(Yt,this.options.chosenClass,!1),Oe.clone=Yt),n.cloneId=Le((function(){Ft("clone",n),Oe.eventCanceled||(n.options.removeCloneOnHide||Vt.insertBefore(Yt,qt),n._hideClone(),Rt({sortable:n,name:"clone"}))})),!e&&bt(qt,o.dragClass,!0),e?(pe=!0,n._loopId=setInterval(n._emulateDragOver,50)):(pt(document,"mouseup",n._onDrop),pt(document,"touchend",n._onDrop),pt(document,"touchcancel",n._onDrop),r&&(r.effectAllowed="move",o.setData&&o.setData.call(n,r,qt)),dt(document,"drop",n),yt(qt,"transform","translateZ(0)")),de=!0,n._dragStartId=Le(n._dragStarted.bind(n,e,t)),dt(document,"selectstart",n),ie=!0,lt&&yt(document.body,"user-select","none"))},_onDragOver:function(t){var e,n,r,o,a=this.el,i=t.target,l=this.options,s=l.group,c=Oe.active,u=Jt===s,d=l.sort,p=Zt||c,h=this,f=!1;if(!ve){if(void 0!==t.preventDefault&&t.cancelable&&t.preventDefault(),i=gt(i,l.draggable,a,!0),E("dragOver"),Oe.eventCanceled)return f;if(qt.contains(t.target)||i.animated&&i.animatingX&&i.animatingY||h._ignoreWhileAnimating===i)return O(!1);if(pe=!1,c&&!l.disabled&&(u?d||(r=!Vt.contains(qt)):Zt===this||(this.lastPutMode=Jt.checkPull(this,c,qt,t))&&s.checkPut(this,c,qt,t))){if(o="vertical"===this._getDirection(t,i),e=Ct(qt),E("dragOverValid"),Oe.eventCanceled)return f;if(r)return Ht=Vt,T(),this._hideClone(),E("revert"),Oe.eventCanceled||(zt?Vt.insertBefore(qt,zt):Vt.appendChild(qt)),O(!0);var g=St(a,l.draggable);if(!g||function(t,e,n){var r=Ct(St(n.el,n.options.draggable));return e?t.clientX>r.right+10||t.clientX<=r.right&&t.clientY>r.bottom&&t.clientX>=r.left:t.clientX>r.right&&t.clientY>r.top||t.clientX<=r.right&&t.clientY>r.bottom+10}(t,o,this)&&!g.animated){if(g===qt)return O(!1);if(g&&a===t.target&&(i=g),i&&(n=Ct(i)),!1!==Ie(Vt,a,qt,e,i,n,t,!!i))return T(),a.appendChild(qt),Ht=a,I(),O(!0)}else if(i.parentNode===a){n=Ct(i);var m,v,b,y=qt.parentNode!==a,A=!function(t,e,n){var r=n?t.left:t.top,o=n?t.right:t.bottom,a=n?t.width:t.height,i=n?e.left:e.top,l=n?e.right:e.bottom,s=n?e.width:e.height;return r===i||o===l||r+a/2===i+s/2}(qt.animated&&qt.toRect||e,i.animated&&i.toRect||n,o),_=o?"top":"left",w=kt(i,"top","top")||kt(qt,"top","top"),C=w?w.scrollTop:void 0;if(le!==i&&(v=n[_],fe=!1,ge=!A&&l.invertSwap||y),m=function(t,e,n,r,o,a,i,l){var s=r?t.clientY:t.clientX,c=r?n.height:n.width,u=r?n.top:n.left,d=r?n.bottom:n.right,p=!1;if(!i)if(l&&ce<c*o){if(!fe&&(1===se?s>u+c*a/2:s<d-c*a/2)&&(fe=!0),fe)p=!0;else if(1===se?s<u+ce:s>d-ce)return-se}else if(s>u+c*(1-o)/2&&s<d-c*(1-o)/2)return function(t){return Dt(qt)<Dt(t)?1:-1}(e);return(p=p||i)&&(s<u+c*a/2||s>d-c*a/2)?s>u+c/2?1:-1:0}(t,i,n,o,A?1:l.swapThreshold,null==l.invertedSwapThreshold?l.swapThreshold:l.invertedSwapThreshold,ge,le===i),0!==m){var k=Dt(qt);do{k-=m,b=Ht.children[k]}while(b&&("none"===yt(b,"display")||b===Ut))}if(0===m||b===i)return O(!1);le=i,se=m;var x=i.nextElementSibling,S=!1,D=Ie(Vt,a,qt,e,i,n,t,S=1===m);if(!1!==D)return 1!==D&&-1!==D||(S=1===D),ve=!0,setTimeout(Me,30),T(),S&&!x?a.appendChild(qt):i.parentNode.insertBefore(qt,S?x:i),w&&jt(w,0,C-w.scrollTop),Ht=qt.parentNode,void 0===v||ge||(ce=Math.abs(v-Ct(i)[_])),I(),O(!0)}if(a.contains(qt))return O(!1)}return!1}function E(l,s){Ft(l,h,nt({evt:t,isOwner:u,axis:o?"vertical":"horizontal",revert:r,dragRect:e,targetRect:n,canSort:d,fromSortable:p,target:i,completed:O,onMove:function(n,r){return Ie(Vt,a,qt,e,n,Ct(n),t,r)},changed:I},s))}function T(){E("dragOverAnimationCapture"),h.captureAnimationState(),h!==p&&p.captureAnimationState()}function O(e){return E("dragOverCompleted",{insertion:e}),e&&(u?c._hideClone():c._showClone(h),h!==p&&(bt(qt,Zt?Zt.options.ghostClass:c.options.ghostClass,!1),bt(qt,l.ghostClass,!0)),Zt!==h&&h!==Oe.active?Zt=h:h===Oe.active&&Zt&&(Zt=null),p===h&&(h._ignoreWhileAnimating=i),h.animateAll((function(){E("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==p&&(p.animateAll(),p._ignoreWhileAnimating=null)),(i===qt&&!qt.animated||i===a&&!i.animated)&&(le=null),l.dragoverBubble||t.rootEl||i===document||(qt.parentNode[Pt]._isOutsideThisEl(t.target),!e&&Ee(t)),!l.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),f=!0}function I(){Xt=Dt(qt),Qt=Dt(qt,l.draggable),Rt({sortable:h,name:"change",toEl:a,newIndex:Xt,newDraggableIndex:Qt,originalEvent:t})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){pt(document,"mousemove",this._onTouchMove),pt(document,"touchmove",this._onTouchMove),pt(document,"pointermove",this._onTouchMove),pt(document,"dragover",Ee),pt(document,"mousemove",Ee),pt(document,"touchmove",Ee)},_offUpEvents:function(){var t=this.el.ownerDocument;pt(t,"mouseup",this._onDrop),pt(t,"touchend",this._onDrop),pt(t,"pointerup",this._onDrop),pt(t,"touchcancel",this._onDrop),pt(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;Xt=Dt(qt),Qt=Dt(qt,n.draggable),Ft("drop",this,{evt:t}),Ht=qt&&qt.parentNode,Xt=Dt(qt),Qt=Dt(qt,n.draggable),Oe.eventCanceled||(de=!1,ge=!1,fe=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Ne(this.cloneId),Ne(this._dragStartId),this.nativeDraggable&&(pt(document,"drop",this),pt(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),lt&&yt(document.body,"user-select",""),yt(qt,"transform",""),t&&(ie&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),Ut&&Ut.parentNode&&Ut.parentNode.removeChild(Ut),(Vt===Ht||Zt&&"clone"!==Zt.lastPutMode)&&Yt&&Yt.parentNode&&Yt.parentNode.removeChild(Yt),qt&&(this.nativeDraggable&&pt(qt,"dragend",this),je(qt),qt.style["will-change"]="",ie&&!de&&bt(qt,Zt?Zt.options.ghostClass:this.options.ghostClass,!1),bt(qt,this.options.chosenClass,!1),Rt({sortable:this,name:"unchoose",toEl:Ht,newIndex:null,newDraggableIndex:null,originalEvent:t}),Vt!==Ht?(Xt>=0&&(Rt({rootEl:Ht,name:"add",toEl:Ht,fromEl:Vt,originalEvent:t}),Rt({sortable:this,name:"remove",toEl:Ht,originalEvent:t}),Rt({rootEl:Ht,name:"sort",toEl:Ht,fromEl:Vt,originalEvent:t}),Rt({sortable:this,name:"sort",toEl:Ht,originalEvent:t})),Zt&&Zt.save()):Xt!==Kt&&Xt>=0&&(Rt({sortable:this,name:"update",toEl:Ht,originalEvent:t}),Rt({sortable:this,name:"sort",toEl:Ht,originalEvent:t})),Oe.active&&(null!=Xt&&-1!==Xt||(Xt=Kt,Qt=$t),Rt({sortable:this,name:"end",toEl:Ht,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){Ft("nulling",this),Vt=qt=Ht=Ut=zt=Yt=Wt=Gt=te=ee=ie=Xt=Qt=Kt=$t=le=se=Zt=Jt=Oe.dragged=Oe.ghost=Oe.clone=Oe.active=null,be.forEach((function(t){t.checked=!0})),be.length=ne=re=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":qt&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,r=0,o=n.length,a=this.options;r<o;r++)gt(t=n[r],a.draggable,this.el,!1)&&e.push(t.getAttribute(a.dataIdAttr)||Pe(t));return e},sort:function(t){var e={},n=this.el;this.toArray().forEach((function(t,r){var o=n.children[r];gt(o,this.options.draggable,n,!1)&&(e[t]=o)}),this),t.forEach((function(t){e[t]&&(n.removeChild(e[t]),n.appendChild(e[t]))}))},save:function(){var t=this.options.store;t&&t.set&&t.set(this)},closest:function(t,e){return gt(t,e||this.options.draggable,this.el,!1)},option:function(t,e){var n=this.options;if(void 0===e)return n[t];var r=Bt.modifyOption(this,t,e);n[t]=void 0!==r?r:e,"group"===t&&xe(n)},destroy:function(){Ft("destroy",this);var t=this.el;t[Pt]=null,pt(t,"mousedown",this._onTapStart),pt(t,"touchstart",this._onTapStart),pt(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(pt(t,"dragover",this),pt(t,"dragenter",this)),Array.prototype.forEach.call(t.querySelectorAll("[draggable]"),(function(t){t.removeAttribute("draggable")})),this._onDrop(),this._disableDelayedDragEvents(),he.splice(he.indexOf(this.el),1),this.el=t=null},_hideClone:function(){if(!Gt){if(Ft("hideClone",this),Oe.eventCanceled)return;yt(Yt,"display","none"),this.options.removeCloneOnHide&&Yt.parentNode&&Yt.parentNode.removeChild(Yt),Gt=!0}},_showClone:function(t){if("clone"===t.lastPutMode){if(Gt){if(Ft("showClone",this),Oe.eventCanceled)return;Vt.contains(qt)&&!this.options.group.revertClone?Vt.insertBefore(Yt,qt):zt?Vt.insertBefore(Yt,zt):Vt.appendChild(Yt),this.options.group.revertClone&&this.animate(qt,Yt),yt(Yt,"display",""),Gt=!1}}else this._hideClone()}},ye&&dt(document,"touchmove",(function(t){(Oe.active||de)&&t.cancelable&&t.preventDefault()})),Oe.utils={on:dt,off:pt,css:yt,find:_t,is:function(t,e){return!!gt(t,e,t,!1)},extend:function(t,e){if(t&&e)for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},throttle:It,closest:gt,toggleClass:bt,clone:Mt,index:Dt,nextTick:Le,cancelNextTick:Ne,detectDirection:ke,getChild:xt},Oe.get=function(t){return t[Pt]},Oe.mount=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];e[0].constructor===Array&&(e=e[0]),e.forEach((function(t){if(!t.prototype||!t.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(t));t.utils&&(Oe.utils=nt({},Oe.utils,t.utils)),Bt.mount(t)}))},Oe.create=function(t,e){return new Oe(t,e)},Oe.version="1.10.2";var Be,Fe,Re,qe,He,Ue,Ve=[],ze=!1;function We(){Ve.forEach((function(t){clearInterval(t.pid)})),Ve=[]}function Ye(){clearInterval(Ue)}var Ge=It((function(t,e,n,r){if(e.scroll){var o,a=(t.touches?t.touches[0]:t).clientX,i=(t.touches?t.touches[0]:t).clientY,l=e.scrollSensitivity,s=e.scrollSpeed,c=wt(),u=!1;Fe!==n&&(Fe=n,We(),Be=e.scroll,o=e.scrollFn,!0===Be&&(Be=Tt(n,!0)));var d=0,p=Be;do{var h=p,f=Ct(h),g=f.top,m=f.bottom,v=f.left,b=f.right,y=f.width,A=f.height,_=void 0,w=void 0,C=h.scrollWidth,k=h.scrollHeight,x=yt(h),S=h.scrollLeft,D=h.scrollTop;h===c?(_=y<C&&("auto"===x.overflowX||"scroll"===x.overflowX||"visible"===x.overflowX),w=A<k&&("auto"===x.overflowY||"scroll"===x.overflowY||"visible"===x.overflowY)):(_=y<C&&("auto"===x.overflowX||"scroll"===x.overflowX),w=A<k&&("auto"===x.overflowY||"scroll"===x.overflowY));var E=_&&(Math.abs(b-a)<=l&&S+y<C)-(Math.abs(v-a)<=l&&!!S),T=w&&(Math.abs(m-i)<=l&&D+A<k)-(Math.abs(g-i)<=l&&!!D);if(!Ve[d])for(var O=0;O<=d;O++)Ve[O]||(Ve[O]={});Ve[d].vx==E&&Ve[d].vy==T&&Ve[d].el===h||(Ve[d].el=h,Ve[d].vx=E,Ve[d].vy=T,clearInterval(Ve[d].pid),0==E&&0==T||(u=!0,Ve[d].pid=setInterval(function(){r&&0===this.layer&&Oe.active._onTouchMove(He);var e=Ve[this.layer].vy?Ve[this.layer].vy*s:0,n=Ve[this.layer].vx?Ve[this.layer].vx*s:0;"function"==typeof o&&"continue"!==o.call(Oe.dragged.parentNode[Pt],n,e,t,He,Ve[this.layer].el)||jt(Ve[this.layer].el,n,e)}.bind({layer:d}),24))),d++}while(e.bubbleScroll&&p!==c&&(p=Tt(p,!1)));ze=u}}),30),Ke=function(t){var e=t.originalEvent,n=t.putSortable,r=t.dragEl,o=t.activeSortable,a=t.dispatchSortableEvent,i=t.hideGhostForTarget,l=t.unhideGhostForTarget;if(e){var s=n||o;i();var c=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e,u=document.elementFromPoint(c.clientX,c.clientY);l(),s&&!s.el.contains(u)&&(a("spill"),this.onSpill({dragEl:r,putSortable:n}))}};function Xe(){}function $e(){}Xe.prototype={startIndex:null,dragStart:function(t){var e=t.oldDraggableIndex;this.startIndex=e},onSpill:function(t){var e=t.dragEl,n=t.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();var r=xt(this.sortable.el,this.startIndex,this.options);r?this.sortable.el.insertBefore(e,r):this.sortable.el.appendChild(e),this.sortable.animateAll(),n&&n.animateAll()},drop:Ke},et(Xe,{pluginName:"revertOnSpill"}),$e.prototype={onSpill:function(t){var e=t.dragEl,n=t.putSortable||this.sortable;n.captureAnimationState(),e.parentNode&&e.parentNode.removeChild(e),n.animateAll()},drop:Ke},et($e,{pluginName:"removeOnSpill"}),Oe.mount(new function(){function t(){for(var t in this.defaults={scroll:!0,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0},this)"_"===t.charAt(0)&&"function"==typeof this[t]&&(this[t]=this[t].bind(this))}return t.prototype={dragStarted:function(t){var e=t.originalEvent;this.sortable.nativeDraggable?dt(document,"dragover",this._handleAutoScroll):this.options.supportPointer?dt(document,"pointermove",this._handleFallbackAutoScroll):e.touches?dt(document,"touchmove",this._handleFallbackAutoScroll):dt(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(t){var e=t.originalEvent;this.options.dragOverBubble||e.rootEl||this._handleAutoScroll(e)},drop:function(){this.sortable.nativeDraggable?pt(document,"dragover",this._handleAutoScroll):(pt(document,"pointermove",this._handleFallbackAutoScroll),pt(document,"touchmove",this._handleFallbackAutoScroll),pt(document,"mousemove",this._handleFallbackAutoScroll)),Ye(),We(),clearTimeout(mt),mt=void 0},nulling:function(){He=Fe=Be=ze=Ue=Re=qe=null,Ve.length=0},_handleFallbackAutoScroll:function(t){this._handleAutoScroll(t,!0)},_handleAutoScroll:function(t,e){var n=this,r=(t.touches?t.touches[0]:t).clientX,o=(t.touches?t.touches[0]:t).clientY,a=document.elementFromPoint(r,o);if(He=t,e||at||ot||lt){Ge(t,this.options,a,e);var i=Tt(a,!0);!ze||Ue&&r===Re&&o===qe||(Ue&&Ye(),Ue=setInterval((function(){var a=Tt(document.elementFromPoint(r,o),!0);a!==i&&(i=a,We()),Ge(t,n.options,a,e)}),10),Re=r,qe=o)}else{if(!this.options.bubbleScroll||Tt(a,!0)===wt())return void We();Ge(t,this.options,Tt(a,!1),!1)}}},et(t,{pluginName:"scroll",initializeByDefault:!0})}),Oe.mount($e,Xe);const Qe=Oe;a.Ay.util.warn;var Je=r(54914),Ze=r(10620),tn=r(41645);const en=(0,a.pM)({name:"AppOrderSelectorElement",components:{IconArrowDown:Ze.A,IconArrowUp:tn.A,NcButton:g.A},props:{ariaDescribedby:{type:String,default:null},ariaDetails:{type:String,default:null},app:{type:Object,required:!0},isFirst:{type:Boolean,default:!1},isLast:{type:Boolean,default:!1}},emits:{"move:up":()=>!0,"move:down":()=>!0,"update:focus":()=>!0},setup(t,e){let{emit:n}=e;const r=(0,a.KR)(),o=(0,a.KR)();let i=0;return{buttonUp:r,buttonDown:o,moveUp:()=>{n("move:up"),i=1},moveDown:()=>{n("move:down"),i=-1},keepFocus:()=>{0!==i&&(1!==i&&!t.isLast||t.isFirst?(0,a.dY)((()=>o.value.$el.focus())):(0,a.dY)((()=>r.value.$el.focus()))),i=0},t:$.Tl}}});var nn=r(12182),rn={};rn.styleTagTransform=H(),rn.setAttributes=B(),rn.insert=L().bind(null,"head"),rn.domAPI=M(),rn.insertStyleElement=R(),I()(nn.A,rn),nn.A&&nn.A.locals&&nn.A.locals;const on=(0,_.A)(en,(function(){var t,e=this,n=e._self._c;return e._self._setupProxy,n("li",{class:{"order-selector-element":!0,"order-selector-element--disabled":e.app.default},attrs:{"data-cy-app-order-element":e.app.id},on:{focusin:function(t){return e.$emit("update:focus")}}},[n("svg",{attrs:{width:"20",height:"20",viewBox:"0 0 20 20",role:"presentation"}},[n("image",{staticClass:"order-selector-element__icon",attrs:{preserveAspectRatio:"xMinYMin meet",x:"0",y:"0",width:"20",height:"20","xlink:href":e.app.icon}})]),e._v(" "),n("div",{staticClass:"order-selector-element__label"},[e._v("\n\t\t"+e._s(null!==(t=e.app.label)&&void 0!==t?t:e.app.id)+"\n\t")]),e._v(" "),n("div",{staticClass:"order-selector-element__actions"},[n("NcButton",{directives:[{name:"show",rawName:"v-show",value:!e.isFirst&&!e.app.default,expression:"!isFirst && !app.default"}],ref:"buttonUp",attrs:{"aria-label":e.t("settings","Move up"),"aria-describedby":e.ariaDescribedby,"aria-details":e.ariaDetails,"data-cy-app-order-button":"up",type:"tertiary-no-background"},on:{click:e.moveUp},scopedSlots:e._u([{key:"icon",fn:function(){return[n("IconArrowUp",{attrs:{size:20}})]},proxy:!0}])}),e._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:e.isFirst||!!e.app.default,expression:"isFirst || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}}),e._v(" "),n("NcButton",{directives:[{name:"show",rawName:"v-show",value:!e.isLast&&!e.app.default,expression:"!isLast && !app.default"}],ref:"buttonDown",attrs:{"aria-label":e.t("settings","Move down"),"aria-describedby":e.ariaDescribedby,"aria-details":e.ariaDetails,"data-cy-app-order-button":"down",type:"tertiary-no-background"},on:{click:e.moveDown},scopedSlots:e._u([{key:"icon",fn:function(){return[n("IconArrowDown",{attrs:{size:20}})]},proxy:!0}])}),e._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:e.isLast||!!e.app.default,expression:"isLast || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}})],1)])}),[],!1,null,"081ebc45",null).exports,an=(0,a.pM)({name:"AppOrderSelector",components:{AppOrderSelectorElement:on,Fragment:Je.F},props:{ariaDetails:{type:String,default:null},value:{type:Array,required:!0}},emits:{"update:value":t=>Array.isArray(t)},setup(t,e){let{emit:n}=e;const r=(0,a.KR)(null),o=(0,a.EW)({get:()=>t.value,set:e=>{const r=[...e].sort(((t,n)=>(n.default?1:0)-(t.default?1:0)||e.indexOf(t)-e.indexOf(n)));r.some(((e,n)=>{let{id:r}=e;return r!==t.value[n].id}))?n("update:value",r):i.value+=1}}),i=(0,a.KR)(0);!function(t,e,n={}){let r;const{document:o=Q.PWG,...i}=n,l={onUpdate:t=>{!function(t,e,n){const r=(0,a.i9)(t),o=r?[...(0,J.BA)(t)]:(0,J.BA)(t);if(n>=0&&n<o.length){const i=o.splice(e,1)[0];(0,a.dY)((()=>{o.splice(n,0,i),r&&(t.value=o)}))}}(e,t.oldIndex,t.newIndex)}},s=()=>{const e="string"==typeof t?null==o?void 0:o.querySelector(t):(0,Q.F4c)(t);e&&void 0===r&&(r=new Qe(e,{...l,...i}))},c=()=>{null==r||r.destroy(),r=void 0};(0,J.rd)(s),(0,J.Uo)(c)}(r,o,{filter:".order-selector-element--disabled"});const l=(0,a.KR)([]);(0,a.$u)((()=>{l.value.forEach((t=>t.keepFocus()))}));const s=(0,a.KR)("");return{appList:o,listElement:r,moveDown:e=>{const r=e>0?t.value.slice(0,e):[];r.push(t.value[e+1]);const o=e<t.value.length-2?t.value.slice(e+2):[];n("update:value",[...r,t.value[e],...o])},moveUp:e=>{var r;const o=e>1?t.value.slice(0,e-1):[];if(null!==(r=t.value[e-1])&&void 0!==r&&r.default)return;const a=[t.value[e-1]];e<t.value.length-1&&a.push(...t.value.slice(e+1)),n("update:value",[...o,t.value[e],...a])},statusInfoId:"sorting-status-info-".concat((Math.random()+1).toString(36).substring(7)),statusInfo:s,updateStatusInfo:e=>{s.value=(0,$.Tl)("theming","Current selected app: {app}, position {position} of {total}",{app:t.value[e].label,position:e+1,total:t.value.length})},renderCount:i,selectorElements:l}}}),ln=an;var sn=r(2254),cn={};cn.styleTagTransform=H(),cn.setAttributes=B(),cn.insert=L().bind(null,"head"),cn.domAPI=M(),cn.insertStyleElement=R(),I()(sn.A,cn),sn.A&&sn.A.locals&&sn.A.locals;var un=(0,_.A)(ln,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("Fragment",[e("div",{staticClass:"hidden-visually",attrs:{id:t.statusInfoId,"aria-live":"polite",role:"status"}},[t._v("\n\t\t"+t._s(t.statusInfo)+"\n\t")]),t._v(" "),e("ol",{ref:"listElement",staticClass:"order-selector",attrs:{"data-cy-app-order":""}},t._l(t.appList,(function(n,r){return e("AppOrderSelectorElement",t._g({key:"".concat(n.id).concat(t.renderCount),ref:"selectorElements",refInFor:!0,attrs:{app:n,"aria-details":t.ariaDetails,"aria-describedby":t.statusInfoId,"is-first":0===r||!!t.appList[r-1].default,"is-last":r===t.value.length-1}},n.default?{}:{"move:up":()=>t.moveUp(r),"move:down":()=>t.moveDown(r),"update:focus":()=>t.updateStatusInfo(r)}))})),1)])}),[],!1,null,"35797e31",null);const dn=un.exports,pn={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},hn=(0,_.A)(pn,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon undo-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var fn=r(52201),gn=r(96763);const mn=(0,a.pM)({name:"UserAppMenuSection",components:{AppOrderSelector:dn,IconUndo:hn,NcButton:g.A,NcNoteCard:fn.A,NcSettingsSection:u.A},setup(){const{userAppOrder:t,enforcedDefaultApp:e}=(0,l.C)("theming","navigationBar"),n=Object.values((0,l.C)("core","apps")).filter((t=>{let{type:e}=t;return"link"===e})).map((t=>({...t,label:t.name,default:t.default&&t.app===e}))),r=(0,a.KR)(!Array.isArray(t)||Object.values(t).length>0),o=(0,a.EW)((()=>n.some(((t,e)=>{let{id:n}=t;return n!==h.value[e].id})))),c="theming-apporder-changed-infocard",u="theming-apporder-changed-infocard",p=(0,a.EW)((()=>(o.value?"".concat(c," "):"")+(e?u:""))),h=(0,a.KR)([...n]),f=async(t,e)=>{const n=(0,i.KT)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"core",configKey:t});return await s.A.post(n,{configValue:JSON.stringify(e)})};return{appOrder:h,updateAppOrder:t=>{const e={};t.forEach(((t,n)=>{let{app:r,id:o}=t;e[o]={order:n,app:r}})),f("apporder",e).then((()=>{h.value=t,r.value=!0})).catch((t=>{gn.warn("Could not set the app order",t),(0,d.Qg)((0,$.Tl)("theming","Could not set the app order"))}))},resetAppOrder:async()=>{try{await f("apporder",[]),r.value=!1;const{data:t}=await s.A.get((0,i.KT)("/core/navigation/apps"),{headers:{"OCS-APIRequest":"true"}});h.value=t.ocs.data.map((t=>({...t,label:t.name,default:t.default&&t.app===e})))}catch(t){gn.warn(t),(0,d.Qg)((0,$.Tl)("theming","Could not reset the app order"))}},enforcedDefaultApp:e,hasAppOrderChanged:o,hasCustomAppOrder:r,ariaDetailsAppOrder:p,elementIdAppOrderChanged:c,elementIdEnforcedDefaultApp:u,t:$.Tl}}}),vn=mn;var bn=r(22335),yn={};yn.styleTagTransform=H(),yn.setAttributes=B(),yn.insert=L().bind(null,"head"),yn.domAPI=M(),yn.insertStyleElement=R(),I()(bn.A,yn),bn.A&&bn.A.locals&&bn.A.locals;const An=(0,_.A)(vn,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcSettingsSection",{attrs:{name:t.t("theming","Navigation bar settings")}},[e("p",[t._v("\n\t\t"+t._s(t.t("theming","You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo."))+"\n\t")]),t._v(" "),t.enforcedDefaultApp?e("NcNoteCard",{attrs:{id:t.elementIdEnforcedDefaultApp,type:"info"}},[t._v("\n\t\t"+t._s(t.t("theming","The default app can not be changed because it was configured by the administrator."))+"\n\t")]):t._e(),t._v(" "),t.hasAppOrderChanged?e("NcNoteCard",{attrs:{id:t.elementIdAppOrderChanged,type:"info"}},[t._v("\n\t\t"+t._s(t.t("theming","The app order was changed, to see it in action you have to reload the page."))+"\n\t")]):t._e(),t._v(" "),e("AppOrderSelector",{staticClass:"user-app-menu-order",attrs:{"aria-details":t.ariaDetailsAppOrder,value:t.appOrder},on:{"update:value":t.updateAppOrder}}),t._v(" "),e("NcButton",{attrs:{"data-test-id":"btn-apporder-reset",disabled:!t.hasCustomAppOrder,type:"tertiary"},on:{click:t.resetAppOrder},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconUndo",{attrs:{size:20}})]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.t("theming","Reset default app order"))+"\n\t")])],1)}),[],!1,null,"ee0f3d1a",null).exports;var _n=r(96763);const wn=(0,l.C)("theming","themes",[]),Cn=(0,l.C)("theming","enforceTheme",""),kn=(0,l.C)("theming","shortcutsDisabled",!1),xn=(0,l.C)("theming","enableBlurFilter",""),Sn=(0,l.C)("theming","isUserThemingDisabled"),Dn={name:"UserThemes",components:{ItemPreview:X,NcCheckboxRadioSwitch:c.A,NcSettingsSection:u.A,BackgroundSettings:z,UserAppMenuSection:An},data:()=>({availableThemes:wn,enforceTheme:Cn,shortcutsDisabled:kn,isUserThemingDisabled:Sn,enableBlurFilter:xn}),computed:{themes(){return this.availableThemes.filter((t=>1===t.type))},fonts(){return this.availableThemes.filter((t=>2===t.type))},selectedTheme(){return this.themes.find((t=>!0===t.enabled))||this.themes[0]},description(){return t("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","</a>")},guidelinesLink:()=>'<a target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noreferrer nofollow">',descriptionDetail(){return t("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"</a>")},issuetrackerLink:()=>'<a target="_blank" href="https://github.com/nextcloud/server/issues/" rel="noreferrer nofollow">',designteamLink:()=>'<a target="_blank" href="https://nextcloud.com/design" rel="noreferrer nofollow">'},watch:{shortcutsDisabled(t){this.changeShortcutsDisabled(t)}},methods:{refreshGlobalStyles(){[...document.head.querySelectorAll("link.theme")].forEach((t=>{const e=new URL(t.href);e.searchParams.set("v",Date.now());const n=t.cloneNode();n.href=e.toString(),n.onload=()=>t.remove(),document.head.append(n)}))},updateBackground(t){this.background="custom"===t.type||"default"===t.type?t.type:t.value,this.refreshGlobalStyles()},changeTheme(t){let{enabled:e,id:n}=t;this.themes.forEach((t=>{t.id===n&&e?t.enabled=!0:t.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,n)},changeFont(t){let{enabled:e,id:n}=t;this.fonts.forEach((t=>{t.id===n&&e?t.enabled=!0:t.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,n)},async changeShortcutsDisabled(t){t?await(0,s.A)({url:(0,i.KT)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),data:{configValue:"yes"},method:"POST"}):await(0,s.A)({url:(0,i.KT)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),method:"DELETE"})},async changeEnableBlurFilter(){this.enableBlurFilter="no"===this.enableBlurFilter?"yes":"no",await(0,s.A)({url:(0,i.KT)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"force_enable_blur_filter"}),data:{configValue:this.enableBlurFilter},method:"POST"}),this.$emit("update:background")},updateBodyAttributes(){const t=this.themes.filter((t=>!0===t.enabled)).map((t=>t.id)),e=this.fonts.filter((t=>!0===t.enabled)).map((t=>t.id));this.themes.forEach((t=>{document.body.toggleAttribute("data-theme-".concat(t.id),t.enabled)})),this.fonts.forEach((t=>{document.body.toggleAttribute("data-theme-".concat(t.id),t.enabled)})),document.body.setAttribute("data-themes",[...t,...e].join(","))},async selectItem(e,n){try{e?await(0,s.A)({url:(0,i.KT)("apps/theming/api/v1/theme/{themeId}/enable",{themeId:n}),method:"PUT"}):await(0,s.A)({url:(0,i.KT)("apps/theming/api/v1/theme/{themeId}",{themeId:n}),method:"DELETE"})}catch(e){_n.error(e,e.response),OC.Notification.showTemporary(t("theming",e.response.data.ocs.meta.message+". Unable to apply the setting."))}}}};var En=r(84232),Tn={};Tn.styleTagTransform=H(),Tn.setAttributes=B(),Tn.insert=L().bind(null,"head"),Tn.domAPI=M(),Tn.insertStyleElement=R(),I()(En.A,Tn),En.A&&En.A.locals&&En.A.locals;const On=(0,_.A)(Dn,(function(){var t=this,e=t._self._c;return e("section",[e("NcSettingsSection",{staticClass:"theming",attrs:{name:t.t("theming","Appearance and accessibility settings"),"limit-width":!1}},[e("p",{domProps:{innerHTML:t._s(t.description)}}),t._v(" "),e("p",{domProps:{innerHTML:t._s(t.descriptionDetail)}}),t._v(" "),e("div",{staticClass:"theming__preview-list"},t._l(t.themes,(function(n){return e("ItemPreview",{key:n.id,attrs:{enforced:n.id===t.enforceTheme,selected:t.selectedTheme.id===n.id,theme:n,unique:1===t.themes.length,type:"theme"},on:{change:t.changeTheme}})})),1),t._v(" "),e("div",{staticClass:"theming__preview-list"},t._l(t.fonts,(function(n){return e("ItemPreview",{key:n.id,attrs:{selected:n.enabled,theme:n,unique:1===t.fonts.length,type:"font"},on:{change:t.changeFont}})})),1),t._v(" "),e("h3",[t._v(t._s(t.t("theming","Misc accessibility options")))]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"checkbox",checked:"yes"===t.enableBlurFilter,indeterminate:""===t.enableBlurFilter},on:{"update:checked":t.changeEnableBlurFilter}},[t._v("\n\t\t\t"+t._s(t.t("theming","Enable blur background filter (may increase GPU load)"))+"\n\t\t")])],1),t._v(" "),e("NcSettingsSection",{staticClass:"background",attrs:{name:t.t("theming","Background"),"data-user-theming-background-disabled":""}},[t.isUserThemingDisabled?[e("p",[t._v(t._s(t.t("theming","Customization has been disabled by your administrator")))])]:[e("p",[t._v(t._s(t.t("theming","Set a custom background")))]),t._v(" "),e("BackgroundSettings",{staticClass:"background__grid",on:{"update:background":t.refreshGlobalStyles}})]],2),t._v(" "),e("NcSettingsSection",{attrs:{name:t.t("theming","Keyboard shortcuts")}},[e("p",[t._v(t._s(t.t("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")))]),t._v(" "),e("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:t.shortcutsDisabled,type:"switch"},on:{"update:checked":function(e){t.shortcutsDisabled=e},change:t.changeShortcutsDisabled}},[t._v("\n\t\t\t"+t._s(t.t("theming","Disable all keyboard shortcuts"))+"\n\t\t")])],1),t._v(" "),e("UserAppMenuSection")],1)}),[],!1,null,"1ed3985c",null).exports;r.nc=btoa((0,o.do)()),a.Ay.prototype.OC=OC,a.Ay.prototype.t=t;const In=new(a.Ay.extend(On));In.$mount("#theming"),In.$on("update:background",(()=>{[...document.head.querySelectorAll("link.theme")].forEach((t=>{const e=new URL(t.href);e.searchParams.set("v",Date.now());const n=t.cloneNode();n.href=e.toString(),n.onload=()=>t.remove(),document.head.append(n)}))}))},84232:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".theming p[data-v-1ed3985c]{max-width:800px}.theming[data-v-1ed3985c] a{font-weight:bold}.theming[data-v-1ed3985c] a:hover,.theming[data-v-1ed3985c] a:focus{text-decoration:underline}.theming__preview-list[data-v-1ed3985c]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-1ed3985c]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-1ed3985c]{display:flex;flex-direction:column}}","",{version:3,sources:["webpack://./apps/theming/src/UserThemes.vue"],names:[],mappings:"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA",sourcesContent:["\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n"],sourceRoot:""}]);const l=i},2254:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".order-selector[data-v-35797e31]{width:max-content;min-width:260px}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelector.vue"],names:[],mappings:"AACA,iCACC,iBAAA,CACA,eAAA",sourcesContent:["\n.order-selector {\n\twidth: max-content;\n\tmin-width: 260px; // align with NcSelect\n}\n"],sourceRoot:""}]);const l=i},12182:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelectorElement.vue"],names:[],mappings:"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA",sourcesContent:["\n.order-selector-element {\n\t// hide default styling\n\tlist-style: none;\n\t// Align children\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\t// Spacing\n\tgap: 12px;\n\tpadding-inline: 12px;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&--disabled {\n\t\tborder-color: var(--color-text-maxcontrast);\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t.order-selector-element__icon {\n\t\t\topacity: 75%;\n\t\t}\n\t}\n\n\t&__actions {\n\t\tflex: 0 0;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tgap: 6px;\n\t}\n\n\t&__label {\n\t\tflex: 1 1;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t&__placeholder {\n\t\theight: 44px;\n\t\twidth: 44px;\n\t}\n\n\t&__icon {\n\t\tfilter: var(--background-invert-if-bright);\n\t}\n}\n"],sourceRoot:""}]);const l=i},49370:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".background-selector[data-v-1175e65a]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background-color[data-v-1175e65a]{display:flex;justify-content:center;align-items:center;width:176px;height:96px;margin:8px;border-radius:var(--border-radius-large);background-color:var(--color-primary)}.background-selector .background[data-v-1175e65a]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-1175e65a]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-1175e65a]{background-color:var(--color-primary-default);background-image:linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)),var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-1175e65a],.background-selector .background__default[data-v-1175e65a],.background-selector .background__color[data-v-1175e65a]{border-color:var(--color-border)}.background-selector .background__default[data-v-1175e65a],.background-selector .background__shipped[data-v-1175e65a]{color:#fff}.background-selector .background[data-color-bright][data-v-1175e65a]{color:#000}.background-selector .background--active[data-v-1175e65a],.background-selector .background[data-v-1175e65a]:hover,.background-selector .background[data-v-1175e65a]:focus{outline:2px solid var(--color-main-text) !important;border-color:var(--color-main-background) !important}.background-selector .background span[data-v-1175e65a]{margin:4px}.background-selector .background .check-icon[data-v-1175e65a]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-1175e65a]{display:block !important}","",{version:3,sources:["webpack://./apps/theming/src/components/BackgroundSettings.vue"],names:[],mappings:"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,wDACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,wCAAA,CACA,qCAAA,CAGD,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,wJAAA,CAGD,kLACC,gCAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAGC,mDAAA,CACA,oDAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA",sourcesContent:["\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background-color {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)), var(--image-background-plain, var(--image-background-default));\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t\tborder-color: var(--color-main-background) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t.check-icon {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) {\n\t\t\t.check-icon {\n\t\t\t\t// Show checkmark\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const l=i},86619:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".theming__preview[data-v-1a08e35a]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-1a08e35a],.theming__preview *[data-v-1a08e35a]{user-select:none}.theming__preview-image[data-v-1a08e35a]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-explanation[data-v-1a08e35a]{margin-bottom:10px}.theming__preview-description[data-v-1a08e35a]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-1a08e35a]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-1a08e35a]{padding:12px 0}.theming__preview--default[data-v-1a08e35a]{grid-column:span 2}.theming__preview-warning[data-v-1a08e35a]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-1a08e35a]{flex-direction:column}.theming__preview-image[data-v-1a08e35a]{margin:0}}","",{version:3,sources:["webpack://./apps/theming/src/components/ItemPreview.vue"],names:[],mappings:"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,kBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA",sourcesContent:["\n@use 'sass:math';\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-explanation {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: math.div(1024px, 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const l=i},22335:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".user-app-menu-order[data-v-ee0f3d1a]{margin-block:12px}","",{version:3,sources:["webpack://./apps/theming/src/components/UserAppMenuSection.vue"],names:[],mappings:"AACA,sCACC,iBAAA",sourcesContent:["\n.user-app-menu-order {\n\tmargin-block: 12px;\n}\n"],sourceRoot:""}]);const l=i},80909:(t,e,n)=>{var r=n(30641),o=n(38329)(r);t.exports=o},16574:(t,e,n)=>{var r=n(80909);t.exports=function(t,e){var n=[];return r(t,(function(t,r,o){e(t,r,o)&&n.push(t)})),n}},30641:(t,e,n)=>{var r=n(86649),o=n(95950);t.exports=function(t,e){return t&&r(t,e,o)}},38329:(t,e,n)=>{var r=n(64894);t.exports=function(t,e){return function(n,o){if(null==n)return n;if(!r(n))return t(n,o);for(var a=n.length,i=e?a:-1,l=Object(n);(e?i--:++i<a)&&!1!==o(l[i],i,l););return n}}},84684:(t,e,n)=>{var r=n(69302),o=n(75288),a=n(36800),i=n(37241),l=Object.prototype,s=l.hasOwnProperty,c=r((function(t,e){t=Object(t);var n=-1,r=e.length,c=r>2?e[2]:void 0;for(c&&a(e[0],e[1],c)&&(r=1);++n<r;)for(var u=e[n],d=i(u),p=-1,h=d.length;++p<h;){var f=d[p],g=t[f];(void 0===g||o(g,l[f])&&!s.call(t,f))&&(t[f]=u[f])}return t}));t.exports=c},87612:(t,e,n)=>{var r=n(79770),o=n(16574),a=n(15389),i=n(56449);t.exports=function(t,e){return(i(t)?r:o)(t,a(e,3))}},64866:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},o=r(n(3772)),a=r(n(5820));o.default.DefaultOpts.ImageClass=a.default,t.exports=o.default},38445:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(n(3772)),a=n(32629),i=function(){function t(t,e){void 0===e&&(e={}),this._src=t,this._opts=e,this._opts.filters=a(o.default.DefaultOpts.filters)}return t.prototype.maxColorCount=function(t){return this._opts.colorCount=t,this},t.prototype.maxDimension=function(t){return this._opts.maxDimension=t,this},t.prototype.addFilter=function(t){return this._opts.filters.push(t),this},t.prototype.removeFilter=function(t){var e=this._opts.filters.indexOf(t);return e>0&&this._opts.filters.splice(e),this},t.prototype.clearFilters=function(){return this._opts.filters=[],this},t.prototype.quality=function(t){return this._opts.quality=t,this},t.prototype.useImageClass=function(t){return this._opts.ImageClass=t,this},t.prototype.useGenerator=function(t){return this._opts.generator=t,this},t.prototype.useQuantizer=function(t){return this._opts.quantizer=t,this},t.prototype.build=function(){return new o.default(this._src,this._opts)},t.prototype.getPalette=function(t){return this.build().getPalette(t)},t.prototype.getSwatches=function(t){return this.build().getPalette(t)},t}();e.default=i},93525:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Swatch=void 0;var r=n(17388),o=n(87612),a=function(){function t(t,e){this._rgb=t,this._population=e}return t.applyFilter=function(t,e){return"function"==typeof e?o(t,(function(t){var n=t.r,r=t.g,o=t.b;return e(n,r,o,255)})):t},Object.defineProperty(t.prototype,"r",{get:function(){return this._rgb[0]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"g",{get:function(){return this._rgb[1]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"b",{get:function(){return this._rgb[2]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rgb",{get:function(){return this._rgb},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hsl",{get:function(){if(!this._hsl){var t=this._rgb,e=t[0],n=t[1],o=t[2];this._hsl=r.rgbToHsl(e,n,o)}return this._hsl},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hex",{get:function(){if(!this._hex){var t=this._rgb,e=t[0],n=t[1],o=t[2];this._hex=r.rgbToHex(e,n,o)}return this._hex},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"population",{get:function(){return this._population},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{rgb:this.rgb,population:this.population}},t.prototype.getRgb=function(){return this._rgb},t.prototype.getHsl=function(){return this.hsl},t.prototype.getPopulation=function(){return this._population},t.prototype.getHex=function(){return this.hex},t.prototype.getYiq=function(){if(!this._yiq){var t=this._rgb;this._yiq=(299*t[0]+587*t[1]+114*t[2])/1e3}return this._yiq},Object.defineProperty(t.prototype,"titleTextColor",{get:function(){return this._titleTextColor||(this._titleTextColor=this.getYiq()<200?"#fff":"#000"),this._titleTextColor},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bodyTextColor",{get:function(){return this._bodyTextColor||(this._bodyTextColor=this.getYiq()<150?"#fff":"#000"),this._bodyTextColor},enumerable:!1,configurable:!0}),t.prototype.getTitleTextColor=function(){return this.titleTextColor},t.prototype.getBodyTextColor=function(){return this.bodyTextColor},t}();e.Swatch=a},54824:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n,r){return r>=125&&!(t>250&&e>250&&n>250)}},53565:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.combineFilters=void 0;var r=n(54824);Object.defineProperty(e,"Default",{enumerable:!0,get:function(){return r.default}}),e.combineFilters=function(t){return Array.isArray(t)&&0!==t.length?function(e,n,r,o){if(0===o)return!1;for(var a=0;a<t.length;a++)if(!t[a](e,n,r,o))return!1;return!0}:null}},71593:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(93525),o=n(17388),a=n(84684),i={targetDarkLuma:.26,maxDarkLuma:.45,minLightLuma:.55,targetLightLuma:.74,minNormalLuma:.3,targetNormalLuma:.5,maxNormalLuma:.7,targetMutesSaturation:.3,maxMutesSaturation:.4,targetVibrantSaturation:1,minVibrantSaturation:.35,weightSaturation:3,weightLuma:6.5,weightPopulation:.5};function l(t,e,n,r,o,a,i,l,s,c){var u=null,d=0;return e.forEach((function(e){var p=e.getHsl(),h=p[1],f=p[2];if(h>=l&&h<=s&&f>=o&&f<=a&&!function(t,e){return t.Vibrant===e||t.DarkVibrant===e||t.LightVibrant===e||t.Muted===e||t.DarkMuted===e||t.LightMuted===e}(t,e)){var g=function(t,e,n,r,o,a,i){function l(t,e){return 1-Math.abs(t-e)}return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var n=0,r=0,o=0;o<t.length;o+=2){var a=t[o],i=t[o+1];n+=a*i,r+=i}return n/r}(l(t,e),i.weightSaturation,l(n,r),i.weightLuma,o/a,i.weightPopulation)}(h,i,f,r,e.getPopulation(),n,c);(null===u||g>d)&&(u=e,d=g)}})),u}e.default=function(t,e){e=a({},e,i);var n=function(t){var e=0;return t.forEach((function(t){e=Math.max(e,t.getPopulation())})),e}(t),s=function(t,e,n){var r={};return r.Vibrant=l(r,t,e,n.targetNormalLuma,n.minNormalLuma,n.maxNormalLuma,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.LightVibrant=l(r,t,e,n.targetLightLuma,n.minLightLuma,1,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.DarkVibrant=l(r,t,e,n.targetDarkLuma,0,n.maxDarkLuma,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.Muted=l(r,t,e,n.targetNormalLuma,n.minNormalLuma,n.maxNormalLuma,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r.LightMuted=l(r,t,e,n.targetLightLuma,n.minLightLuma,1,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r.DarkMuted=l(r,t,e,n.targetDarkLuma,0,n.maxDarkLuma,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r}(t,n,e);return function(t,e,n){if(null===t.Vibrant&&null===t.DarkVibrant&&null===t.LightVibrant){if(null===t.DarkVibrant&&null!==t.DarkMuted){var a=t.DarkMuted.getHsl(),i=a[0],l=a[1],s=a[2];s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightVibrant&&null!==t.LightMuted){var c=t.LightMuted.getHsl();i=c[0],l=c[1],s=c[2],s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}}if(null===t.Vibrant&&null!==t.DarkVibrant){var u=t.DarkVibrant.getHsl();i=u[0],l=u[1],s=u[2],s=n.targetNormalLuma,t.Vibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}else if(null===t.Vibrant&&null!==t.LightVibrant){var d=t.LightVibrant.getHsl();i=d[0],l=d[1],s=d[2],s=n.targetNormalLuma,t.Vibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.DarkVibrant&&null!==t.Vibrant){var p=t.Vibrant.getHsl();i=p[0],l=p[1],s=p[2],s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightVibrant&&null!==t.Vibrant){var h=t.Vibrant.getHsl();i=h[0],l=h[1],s=h[2],s=n.targetLightLuma,t.LightVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.Muted&&null!==t.Vibrant){var f=t.Vibrant.getHsl();i=f[0],l=f[1],s=f[2],s=n.targetMutesSaturation,t.Muted=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.DarkMuted&&null!==t.DarkVibrant){var g=t.DarkVibrant.getHsl();i=g[0],l=g[1],s=g[2],s=n.targetMutesSaturation,t.DarkMuted=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightMuted&&null!==t.LightVibrant){var m=t.LightVibrant.getHsl();i=m[0],l=m[1],s=m[2],s=n.targetMutesSaturation,t.LightMuted=new r.Swatch(o.hslToRgb(i,l,s),0)}}(s,0,e),s}},3528:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(71593);Object.defineProperty(e,"Default",{enumerable:!0,get:function(){return r.default}})},59327:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ImageBase=void 0;var n=function(){function t(){}return t.prototype.scaleDown=function(t){var e=this.getWidth(),n=this.getHeight(),r=1;if(t.maxDimension>0){var o=Math.max(e,n);o>t.maxDimension&&(r=t.maxDimension/o)}else r=1/t.quality;r<1&&this.resize(e*r,n*r,r)},t.prototype.applyFilter=function(t){var e=this.getImageData();if("function"==typeof t)for(var n=e.data,r=n.length/4,o=void 0,a=0;a<r;a++)t(n[0+(o=4*a)],n[o+1],n[o+2],n[o+3])||(n[o+3]=0);return Promise.resolve(e)},t}();e.ImageBase=n},5820:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},r(t,e)},function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),a=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),i=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),l=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.hasOwnProperty.call(t,n)&&a(e,t,n);return i(e,t),e};Object.defineProperty(e,"__esModule",{value:!0});var s=n(59327),c=l(n(88835)),u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.prototype._initCanvas=function(){var t=this.image,e=this._canvas=document.createElement("canvas"),n=this._context=e.getContext("2d");e.className="vibrant-canvas",e.style.display="none",this._width=e.width=t.width,this._height=e.height=t.height,n.drawImage(t,0,0),document.body.appendChild(e)},e.prototype.load=function(t){var e,n,r,o,a,i,l=this,s=null,u=null;if("string"==typeof t)s=document.createElement("img"),a=t,null===(i=c.parse(a)).protocol&&null===i.host&&null===i.port||(e=window.location.href,n=t,r=c.parse(e),o=c.parse(n),r.protocol===o.protocol&&r.hostname===o.hostname&&r.port===o.port)||(s.crossOrigin="anonymous"),u=s.src=t;else{if(!(t instanceof HTMLImageElement))return Promise.reject(new Error("Cannot load buffer as an image in browser"));s=t,u=t.src}return this.image=s,new Promise((function(t,e){var n=function(){l._initCanvas(),t(l)};s.complete?n():(s.onload=n,s.onerror=function(t){return e(new Error("Fail to load image: "+u))})}))},e.prototype.clear=function(){this._context.clearRect(0,0,this._width,this._height)},e.prototype.update=function(t){this._context.putImageData(t,0,0)},e.prototype.getWidth=function(){return this._width},e.prototype.getHeight=function(){return this._height},e.prototype.resize=function(t,e,n){var r=this,o=r._canvas,a=r._context,i=r.image;this._width=o.width=t,this._height=o.height=e,a.scale(n,n),a.drawImage(i,0,0)},e.prototype.getPixelCount=function(){return this._width*this._height},e.prototype.getImageData=function(){return this._context.getImageData(0,0,this._width,this._height)},e.prototype.remove=function(){this._canvas&&this._canvas.parentNode&&this._canvas.parentNode.removeChild(this._canvas)},e}(s.ImageBase);e.default=u},5182:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WebWorker=void 0;var r=n(89950);Object.defineProperty(e,"MMCQ",{enumerable:!0,get:function(){return r.default}}),e.WebWorker=null},89950:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=n(93525),a=r(n(72747)),i=r(n(46839));function l(t,e){for(var n=t.size();t.size()<e;){var r=t.pop();if(!(r&&r.count()>0))break;var o=r.split(),a=o[0],i=o[1];if(t.push(a),i&&i.count()>0&&t.push(i),t.size()===n)break;n=t.size()}}e.default=function(t,e){if(0===t.length||e.colorCount<2||e.colorCount>256)throw new Error("Wrong MMCQ parameters");var n=a.default.build(t),r=n.hist,s=(Object.keys(r).length,new i.default((function(t,e){return t.count()-e.count()})));s.push(n),l(s,.75*e.colorCount);var c=new i.default((function(t,e){return t.count()*t.volume()-e.count()*e.volume()}));return c.contents=s.contents,l(c,e.colorCount-c.size()),function(t){for(var e=[];t.size();){var n=t.pop(),r=n.avg();r[0],r[1],r[2],e.push(new o.Swatch(r,n.count()))}return e}(c)}},46839:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t){this._comparator=t,this.contents=[],this._sorted=!1}return t.prototype._sort=function(){this._sorted||(this.contents.sort(this._comparator),this._sorted=!0)},t.prototype.push=function(t){this.contents.push(t),this._sorted=!1},t.prototype.peek=function(t){return this._sort(),t="number"==typeof t?t:this.contents.length-1,this.contents[t]},t.prototype.pop=function(){return this._sort(),this.contents.pop()},t.prototype.size=function(){return this.contents.length},t.prototype.map=function(t){return this._sort(),this.contents.map(t)},t}();e.default=n},72747:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(17388),o=function(){function t(t,e,n,r,o,a,i){this._volume=-1,this._count=-1,this.dimension={r1:t,r2:e,g1:n,g2:r,b1:o,b2:a},this.hist=i}return t.build=function(e,n){var o,a,i,l,s,c,u,d,p,h=1<<3*r.SIGBITS,f=new Uint32Array(h);o=i=s=0,a=l=c=Number.MAX_VALUE;for(var g=e.length/4,m=0;m<g;){var v=4*m;m++,u=e[v+0],d=e[v+1],p=e[v+2],0!==e[v+3]&&(u>>=r.RSHIFT,d>>=r.RSHIFT,p>>=r.RSHIFT,f[r.getColorIndex(u,d,p)]+=1,u>o&&(o=u),u<a&&(a=u),d>i&&(i=d),d<l&&(l=d),p>s&&(s=p),p<c&&(c=p))}return new t(a,o,l,i,c,s,f)},t.prototype.invalidate=function(){this._volume=this._count=-1,this._avg=null},t.prototype.volume=function(){if(this._volume<0){var t=this.dimension,e=t.r1,n=t.r2,r=t.g1,o=t.g2,a=t.b1,i=t.b2;this._volume=(n-e+1)*(o-r+1)*(i-a+1)}return this._volume},t.prototype.count=function(){if(this._count<0){for(var t=this.hist,e=this.dimension,n=e.r1,o=e.r2,a=e.g1,i=e.g2,l=e.b1,s=e.b2,c=0,u=n;u<=o;u++)for(var d=a;d<=i;d++)for(var p=l;p<=s;p++)c+=t[r.getColorIndex(u,d,p)];this._count=c}return this._count},t.prototype.clone=function(){var e=this.hist,n=this.dimension;return new t(n.r1,n.r2,n.g1,n.g2,n.b1,n.b2,e)},t.prototype.avg=function(){if(!this._avg){var t=this.hist,e=this.dimension,n=e.r1,o=e.r2,a=e.g1,i=e.g2,l=e.b1,s=e.b2,c=0,u=1<<8-r.SIGBITS,d=void 0,p=void 0,h=void 0;d=p=h=0;for(var f=n;f<=o;f++)for(var g=a;g<=i;g++)for(var m=l;m<=s;m++){var v=t[r.getColorIndex(f,g,m)];c+=v,d+=v*(f+.5)*u,p+=v*(g+.5)*u,h+=v*(m+.5)*u}this._avg=c?[~~(d/c),~~(p/c),~~(h/c)]:[~~(u*(n+o+1)/2),~~(u*(a+i+1)/2),~~(u*(l+s+1)/2)]}return this._avg},t.prototype.contains=function(t){var e=t[0],n=t[1],o=t[2],a=this.dimension,i=a.r1,l=a.r2,s=a.g1,c=a.g2,u=a.b1,d=a.b2;return e>>=r.RSHIFT,n>>=r.RSHIFT,o>>=r.RSHIFT,e>=i&&e<=l&&n>=s&&n<=c&&o>=u&&o<=d},t.prototype.split=function(){var t=this.hist,e=this.dimension,n=e.r1,o=e.r2,a=e.g1,i=e.g2,l=e.b1,s=e.b2,c=this.count();if(!c)return[];if(1===c)return[this.clone()];var u,d,p=o-n+1,h=i-a+1,f=s-l+1,g=Math.max(p,h,f),m=null;u=d=0;var v=null;if(g===p){v="r",m=new Uint32Array(o+1);for(var b=n;b<=o;b++){u=0;for(var y=a;y<=i;y++)for(var A=l;A<=s;A++)u+=t[r.getColorIndex(b,y,A)];d+=u,m[b]=d}}else if(g===h)for(v="g",m=new Uint32Array(i+1),y=a;y<=i;y++){for(u=0,b=n;b<=o;b++)for(A=l;A<=s;A++)u+=t[r.getColorIndex(b,y,A)];d+=u,m[y]=d}else for(v="b",m=new Uint32Array(s+1),A=l;A<=s;A++){for(u=0,b=n;b<=o;b++)for(y=a;y<=i;y++)u+=t[r.getColorIndex(b,y,A)];d+=u,m[A]=d}for(var _=-1,w=new Uint32Array(m.length),C=0;C<m.length;C++){var k=m[C];_<0&&k>d/2&&(_=C),w[C]=d-k}var x=this;return function(t){var e=t+"1",n=t+"2",r=x.dimension[e],o=x.dimension[n],a=x.clone(),i=x.clone(),l=_-r,s=o-_;for(l<=s?(o=Math.min(o-1,~~(_+s/2)),o=Math.max(0,o)):(o=Math.max(r,~~(_-1-l/2)),o=Math.min(x.dimension[n],o));!m[o];)o++;for(var c=w[o];!c&&m[o-1];)c=w[--o];return a.dimension[n]=o,i.dimension[e]=o+1,[a,i]}(v)},t}();e.default=o},17388:(t,e)=>{"use strict";function n(t){var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return null===e?null:[e[1],e[2],e[3]].map((function(t){return parseInt(t,16)}))}function r(t,e,n){return e/=255,n/=255,t=(t/=255)>.04045?Math.pow((t+.005)/1.055,2.4):t/12.92,e=e>.04045?Math.pow((e+.005)/1.055,2.4):e/12.92,n=n>.04045?Math.pow((n+.005)/1.055,2.4):n/12.92,[.4124*(t*=100)+.3576*(e*=100)+.1805*(n*=100),.2126*t+.7152*e+.0722*n,.0193*t+.1192*e+.9505*n]}function o(t,e,n){return e/=100,n/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(e=e>.008856?Math.pow(e,1/3):7.787*e+16/116)-16,500*(t-e),200*(e-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function a(t,e,n){var a=r(t,e,n);return o(a[0],a[1],a[2])}function i(t,e){var n=t[0],r=t[1],o=t[2],a=e[0],i=e[1],l=e[2],s=n-a,c=r-i,u=o-l,d=Math.sqrt(r*r+o*o),p=a-n,h=Math.sqrt(i*i+l*l)-d,f=Math.sqrt(s*s+c*c+u*u),g=Math.sqrt(f)>Math.sqrt(Math.abs(p))+Math.sqrt(Math.abs(h))?Math.sqrt(f*f-p*p-h*h):0;return p/=1,h/=1*(1+.045*d),g/=1*(1+.015*d),Math.sqrt(p*p+h*h+g*g)}function l(t,e){return i(a.apply(void 0,t),a.apply(void 0,e))}Object.defineProperty(e,"__esModule",{value:!0}),e.getColorIndex=e.getColorDiffStatus=e.hexDiff=e.rgbDiff=e.deltaE94=e.rgbToCIELab=e.xyzToCIELab=e.rgbToXyz=e.hslToRgb=e.rgbToHsl=e.rgbToHex=e.hexToRgb=e.defer=e.RSHIFT=e.SIGBITS=e.DELTAE94_DIFF_STATUS=void 0,e.DELTAE94_DIFF_STATUS={NA:0,PERFECT:1,CLOSE:2,GOOD:10,SIMILAR:50},e.SIGBITS=5,e.RSHIFT=8-e.SIGBITS,e.defer=function(){var t,e,n=new Promise((function(n,r){t=n,e=r}));return{resolve:t,reject:e,promise:n}},e.hexToRgb=n,e.rgbToHex=function(t,e,n){return"#"+((1<<24)+(t<<16)+(e<<8)+n).toString(16).slice(1,7)},e.rgbToHsl=function(t,e,n){t/=255,e/=255,n/=255;var r,o,a=Math.max(t,e,n),i=Math.min(t,e,n),l=(a+i)/2;if(a===i)r=o=0;else{var s=a-i;switch(o=l>.5?s/(2-a-i):s/(a+i),a){case t:r=(e-n)/s+(e<n?6:0);break;case e:r=(n-t)/s+2;break;case n:r=(t-e)/s+4}r/=6}return[r,o,l]},e.hslToRgb=function(t,e,n){var r,o,a;function i(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}if(0===e)r=o=a=n;else{var l=n<.5?n*(1+e):n+e-n*e,s=2*n-l;r=i(s,l,t+1/3),o=i(s,l,t),a=i(s,l,t-1/3)}return[255*r,255*o,255*a]},e.rgbToXyz=r,e.xyzToCIELab=o,e.rgbToCIELab=a,e.deltaE94=i,e.rgbDiff=l,e.hexDiff=function(t,e){return l(n(t),n(e))},e.getColorDiffStatus=function(t){return t<e.DELTAE94_DIFF_STATUS.NA?"N/A":t<=e.DELTAE94_DIFF_STATUS.PERFECT?"Perfect":t<=e.DELTAE94_DIFF_STATUS.CLOSE?"Close":t<=e.DELTAE94_DIFF_STATUS.GOOD?"Good":t<e.DELTAE94_DIFF_STATUS.SIMILAR?"Similar":"Wrong"},e.getColorIndex=function(t,n,r){return(t<<2*e.SIGBITS)+(n<<e.SIGBITS)+r}},3772:function(t,e,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),o=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),a=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.hasOwnProperty.call(t,n)&&r(e,t,n);return o(e,t),e},i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var l=n(93525),s=i(n(38445)),c=a(n(17388)),u=a(n(5182)),d=a(n(3528)),p=a(n(53565)),h=n(84684),f=function(){function t(e,n){this._src=e,this.opts=h({},n,t.DefaultOpts),this.opts.combinedFilter=p.combineFilters(this.opts.filters)}return t.from=function(t){return new s.default(t)},t.prototype._process=function(t,e){var n=e.quantizer,r=e.generator;return t.scaleDown(e),t.applyFilter(e.combinedFilter).then((function(t){return n(t.data,e)})).then((function(t){return l.Swatch.applyFilter(t,e.combinedFilter)})).then((function(t){return Promise.resolve(r(t))}))},t.prototype.palette=function(){return this.swatches()},t.prototype.swatches=function(){return this._palette},t.prototype.getPalette=function(t){var e=this,n=new this.opts.ImageClass,r=n.load(this._src).then((function(t){return e._process(t,e.opts)})).then((function(t){return e._palette=t,n.remove(),t}),(function(t){throw n.remove(),t}));return t&&r.then((function(e){return t(null,e)}),(function(e){return t(e)})),r},t.Builder=s.default,t.Quantizer=u,t.Generator=d,t.Filter=p,t.Util=c,t.Swatch=l.Swatch,t.DefaultOpts={colorCount:64,quality:5,generator:d.Default,ImageClass:null,quantizer:u.MMCQ,filters:[p.Default]},t}();e.default=f},58859:(t,e,n)=>{var r="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,a=r&&o&&"function"==typeof o.get?o.get:null,i=r&&Map.prototype.forEach,l="function"==typeof Set&&Set.prototype,s=Object.getOwnPropertyDescriptor&&l?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,c=l&&s&&"function"==typeof s.get?s.get:null,u=l&&Set.prototype.forEach,d="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,p="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,h="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,f=Boolean.prototype.valueOf,g=Object.prototype.toString,m=Function.prototype.toString,v=String.prototype.match,b=String.prototype.slice,y=String.prototype.replace,A=String.prototype.toUpperCase,_=String.prototype.toLowerCase,w=RegExp.prototype.test,C=Array.prototype.concat,k=Array.prototype.join,x=Array.prototype.slice,S=Math.floor,D="function"==typeof BigInt?BigInt.prototype.valueOf:null,E=Object.getOwnPropertySymbols,T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,O="function"==typeof Symbol&&"object"==typeof Symbol.iterator,I="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,j=Object.prototype.propertyIsEnumerable,M=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function P(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||w.call(/e/,e))return e;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var r=t<0?-S(-t):S(t);if(r!==t){var o=String(r),a=b.call(e,o.length+1);return y.call(o,n,"$&_")+"."+y.call(y.call(a,/([0-9]{3})/g,"$&_"),/_$/,"")}}return y.call(e,n,"$&_")}var L=n(42634),N=L.custom,B=U(N)?N:null;function F(t,e,n){var r="double"===(n.quoteStyle||e)?'"':"'";return r+t+r}function R(t){return y.call(String(t),/"/g,""")}function q(t){return!("[object Array]"!==W(t)||I&&"object"==typeof t&&I in t)}function H(t){return!("[object RegExp]"!==W(t)||I&&"object"==typeof t&&I in t)}function U(t){if(O)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,o,l){var s=r||{};if(z(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(z(s,"maxStringLength")&&("number"==typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var g=!z(s,"customInspect")||s.customInspect;if("boolean"!=typeof g&&"symbol"!==g)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(z(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(z(s,"numericSeparator")&&"boolean"!=typeof s.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var A=s.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return G(e,s);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var w=String(e);return A?P(e,w):w}if("bigint"==typeof e){var S=String(e)+"n";return A?P(e,S):S}var E=void 0===s.depth?5:s.depth;if(void 0===o&&(o=0),o>=E&&E>0&&"object"==typeof e)return q(e)?"[Array]":"[Object]";var N,V=function(t,e){var n;if("\t"===t.indent)n="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;n=k.call(Array(t.indent+1)," ")}return{base:n,prev:k.call(Array(e+1),n)}}(s,o);if(void 0===l)l=[];else if(Y(l,e)>=0)return"[Circular]";function K(e,n,r){if(n&&(l=x.call(l)).push(n),r){var a={depth:s.depth};return z(s,"quoteStyle")&&(a.quoteStyle=s.quoteStyle),t(e,a,o+1,l)}return t(e,s,o+1,l)}if("function"==typeof e&&!H(e)){var tt=function(t){if(t.name)return t.name;var e=v.call(m.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),et=Z(e,K);return"[Function"+(tt?": "+tt:" (anonymous)")+"]"+(et.length>0?" { "+k.call(et,", ")+" }":"")}if(U(e)){var nt=O?y.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):T.call(e);return"object"!=typeof e||O?nt:X(nt)}if((N=e)&&"object"==typeof N&&("undefined"!=typeof HTMLElement&&N instanceof HTMLElement||"string"==typeof N.nodeName&&"function"==typeof N.getAttribute)){for(var rt="<"+_.call(String(e.nodeName)),ot=e.attributes||[],at=0;at<ot.length;at++)rt+=" "+ot[at].name+"="+F(R(ot[at].value),"double",s);return rt+=">",e.childNodes&&e.childNodes.length&&(rt+="..."),rt+"</"+_.call(String(e.nodeName))+">"}if(q(e)){if(0===e.length)return"[]";var it=Z(e,K);return V&&!function(t){for(var e=0;e<t.length;e++)if(Y(t[e],"\n")>=0)return!1;return!0}(it)?"["+J(it,V)+"]":"[ "+k.call(it,", ")+" ]"}if(function(t){return!("[object Error]"!==W(t)||I&&"object"==typeof t&&I in t)}(e)){var lt=Z(e,K);return"cause"in Error.prototype||!("cause"in e)||j.call(e,"cause")?0===lt.length?"["+String(e)+"]":"{ ["+String(e)+"] "+k.call(lt,", ")+" }":"{ ["+String(e)+"] "+k.call(C.call("[cause]: "+K(e.cause),lt),", ")+" }"}if("object"==typeof e&&g){if(B&&"function"==typeof e[B]&&L)return L(e,{depth:E-o});if("symbol"!==g&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!a||!t||"object"!=typeof t)return!1;try{a.call(t);try{c.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var st=[];return i&&i.call(e,(function(t,n){st.push(K(n,e,!0)+" => "+K(t,e))})),Q("Map",a.call(e),st,V)}if(function(t){if(!c||!t||"object"!=typeof t)return!1;try{c.call(t);try{a.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ct=[];return u&&u.call(e,(function(t){ct.push(K(t,e))})),Q("Set",c.call(e),ct,V)}if(function(t){if(!d||!t||"object"!=typeof t)return!1;try{d.call(t,d);try{p.call(t,p)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return $("WeakMap");if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{p.call(t,p);try{d.call(t,d)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return $("WeakSet");if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{return h.call(t),!0}catch(t){}return!1}(e))return $("WeakRef");if(function(t){return!("[object Number]"!==W(t)||I&&"object"==typeof t&&I in t)}(e))return X(K(Number(e)));if(function(t){if(!t||"object"!=typeof t||!D)return!1;try{return D.call(t),!0}catch(t){}return!1}(e))return X(K(D.call(e)));if(function(t){return!("[object Boolean]"!==W(t)||I&&"object"==typeof t&&I in t)}(e))return X(f.call(e));if(function(t){return!("[object String]"!==W(t)||I&&"object"==typeof t&&I in t)}(e))return X(K(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if(e===n.g)return"{ [object globalThis] }";if(!function(t){return!("[object Date]"!==W(t)||I&&"object"==typeof t&&I in t)}(e)&&!H(e)){var ut=Z(e,K),dt=M?M(e)===Object.prototype:e instanceof Object||e.constructor===Object,pt=e instanceof Object?"":"null prototype",ht=!dt&&I&&Object(e)===e&&I in e?b.call(W(e),8,-1):pt?"Object":"",ft=(dt||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(ht||pt?"["+k.call(C.call([],ht||[],pt||[]),": ")+"] ":"");return 0===ut.length?ft+"{}":V?ft+"{"+J(ut,V)+"}":ft+"{ "+k.call(ut,", ")+" }"}return String(e)};var V=Object.prototype.hasOwnProperty||function(t){return t in this};function z(t,e){return V.call(t,e)}function W(t){return g.call(t)}function Y(t,e){if(t.indexOf)return t.indexOf(e);for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1}function G(t,e){if(t.length>e.maxStringLength){var n=t.length-e.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return G(b.call(t,0,e.maxStringLength),e)+r}return F(y.call(y.call(t,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,K),"single",e)}function K(t){var e=t.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return n?"\\"+n:"\\x"+(e<16?"0":"")+A.call(e.toString(16))}function X(t){return"Object("+t+")"}function $(t){return t+" { ? }"}function Q(t,e,n,r){return t+" ("+e+") {"+(r?J(n,r):k.call(n,", "))+"}"}function J(t,e){if(0===t.length)return"";var n="\n"+e.prev+e.base;return n+k.call(t,","+n)+"\n"+e.prev}function Z(t,e){var n=q(t),r=[];if(n){r.length=t.length;for(var o=0;o<t.length;o++)r[o]=z(t,o)?e(t[o],t):""}var a,i="function"==typeof E?E(t):[];if(O){a={};for(var l=0;l<i.length;l++)a["$"+i[l]]=i[l]}for(var s in t)z(t,s)&&(n&&String(Number(s))===s&&s<t.length||O&&a["$"+s]instanceof Symbol||(w.call(/[^\w$]/,s)?r.push(e(s,t)+": "+e(t[s],t)):r.push(s+": "+e(t[s],t))));if("function"==typeof E)for(var c=0;c<i.length;c++)j.call(t,i[c])&&r.push("["+e(i[c])+"]: "+e(t[i[c]],t));return r}},920:(t,e,n)=>{"use strict";var r=n(70453),o=n(38075),a=n(58859),i=n(69675),l=r("%WeakMap%",!0),s=r("%Map%",!0),c=o("WeakMap.prototype.get",!0),u=o("WeakMap.prototype.set",!0),d=o("WeakMap.prototype.has",!0),p=o("Map.prototype.get",!0),h=o("Map.prototype.set",!0),f=o("Map.prototype.has",!0),g=function(t,e){for(var n,r=t;null!==(n=r.next);r=n)if(n.key===e)return r.next=n.next,n.next=t.next,t.next=n,n};t.exports=function(){var t,e,n,r={assert:function(t){if(!r.has(t))throw new i("Side channel does not contain "+a(t))},get:function(r){if(l&&r&&("object"==typeof r||"function"==typeof r)){if(t)return c(t,r)}else if(s){if(e)return p(e,r)}else if(n)return function(t,e){var n=g(t,e);return n&&n.value}(n,r)},has:function(r){if(l&&r&&("object"==typeof r||"function"==typeof r)){if(t)return d(t,r)}else if(s){if(e)return f(e,r)}else if(n)return function(t,e){return!!g(t,e)}(n,r);return!1},set:function(r,o){l&&r&&("object"==typeof r||"function"==typeof r)?(t||(t=new l),u(t,r,o)):s?(e||(e=new s),h(e,r,o)):(n||(n={key:{},next:null}),function(t,e,n){var r=g(t,e);r?r.value=n:t.next={key:e,next:t.next,value:n}}(n,r,o))}};return r}},61270:function(t,e,n){var r;t=n.nmd(t),function(o){e&&e.nodeType,t&&t.nodeType;var a="object"==typeof n.g&&n.g;a.global!==a&&a.window!==a&&a.self;var i,l=2147483647,s=36,c=26,u=38,d=700,p=/^xn--/,h=/[^\x20-\x7E]/,f=/[\x2E\u3002\uFF0E\uFF61]/g,g={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},m=s-1,v=Math.floor,b=String.fromCharCode;function y(t){throw new RangeError(g[t])}function A(t,e){for(var n=t.length,r=[];n--;)r[n]=e(t[n]);return r}function _(t,e){var n=t.split("@"),r="";return n.length>1&&(r=n[0]+"@",t=n[1]),r+A((t=t.replace(f,".")).split("."),e).join(".")}function w(t){for(var e,n,r=[],o=0,a=t.length;o<a;)(e=t.charCodeAt(o++))>=55296&&e<=56319&&o<a?56320==(64512&(n=t.charCodeAt(o++)))?r.push(((1023&e)<<10)+(1023&n)+65536):(r.push(e),o--):r.push(e);return r}function C(t){return A(t,(function(t){var e="";return t>65535&&(e+=b((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+b(t)})).join("")}function k(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function x(t,e,n){var r=0;for(t=n?v(t/d):t>>1,t+=v(t/e);t>m*c>>1;r+=s)t=v(t/m);return v(r+(m+1)*t/(t+u))}function S(t){var e,n,r,o,a,i,u,d,p,h,f,g=[],m=t.length,b=0,A=128,_=72;for((n=t.lastIndexOf("-"))<0&&(n=0),r=0;r<n;++r)t.charCodeAt(r)>=128&&y("not-basic"),g.push(t.charCodeAt(r));for(o=n>0?n+1:0;o<m;){for(a=b,i=1,u=s;o>=m&&y("invalid-input"),((d=(f=t.charCodeAt(o++))-48<10?f-22:f-65<26?f-65:f-97<26?f-97:s)>=s||d>v((l-b)/i))&&y("overflow"),b+=d*i,!(d<(p=u<=_?1:u>=_+c?c:u-_));u+=s)i>v(l/(h=s-p))&&y("overflow"),i*=h;_=x(b-a,e=g.length+1,0==a),v(b/e)>l-A&&y("overflow"),A+=v(b/e),b%=e,g.splice(b++,0,A)}return C(g)}function D(t){var e,n,r,o,a,i,u,d,p,h,f,g,m,A,_,C=[];for(g=(t=w(t)).length,e=128,n=0,a=72,i=0;i<g;++i)(f=t[i])<128&&C.push(b(f));for(r=o=C.length,o&&C.push("-");r<g;){for(u=l,i=0;i<g;++i)(f=t[i])>=e&&f<u&&(u=f);for(u-e>v((l-n)/(m=r+1))&&y("overflow"),n+=(u-e)*m,e=u,i=0;i<g;++i)if((f=t[i])<e&&++n>l&&y("overflow"),f==e){for(d=n,p=s;!(d<(h=p<=a?1:p>=a+c?c:p-a));p+=s)_=d-h,A=s-h,C.push(b(k(h+_%A,0))),d=v(_/A);C.push(b(k(d,0))),a=x(n,m,r==o),n=0,++r}++n,++e}return C.join("")}i={version:"1.4.1",ucs2:{decode:w,encode:C},decode:S,encode:D,toASCII:function(t){return _(t,(function(t){return h.test(t)?"xn--"+D(t):t}))},toUnicode:function(t){return _(t,(function(t){return p.test(t)?S(t.slice(4).toLowerCase()):t}))}},void 0===(r=function(){return i}.call(e,n,e,t))||(t.exports=r)}()},95902:t=>{"use strict";var e=String.prototype.replace,n=/%20/g,r="RFC3986";t.exports={default:r,formatters:{RFC1738:function(t){return e.call(t,n,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:r}},63098:(t,e,n)=>{"use strict";var r=n(91207),o=n(60969),a=n(95902);t.exports={formats:a,parse:o,stringify:r}},60969:(t,e,n)=>{"use strict";var r=n(62795),o=Object.prototype.hasOwnProperty,a=Array.isArray,i={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!0,decoder:r.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},l=function(t){return t.replace(/&#(\d+);/g,(function(t,e){return String.fromCharCode(parseInt(e,10))}))},s=function(t,e){return t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1?t.split(","):t},c=function(t,e,n,r){if(t){var a=n.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t,i=/(\[[^[\]]*])/g,l=n.depth>0&&/(\[[^[\]]*])/.exec(a),c=l?a.slice(0,l.index):a,u=[];if(c){if(!n.plainObjects&&o.call(Object.prototype,c)&&!n.allowPrototypes)return;u.push(c)}for(var d=0;n.depth>0&&null!==(l=i.exec(a))&&d<n.depth;){if(d+=1,!n.plainObjects&&o.call(Object.prototype,l[1].slice(1,-1))&&!n.allowPrototypes)return;u.push(l[1])}return l&&u.push("["+a.slice(l.index)+"]"),function(t,e,n,r){for(var o=r?e:s(e,n),a=t.length-1;a>=0;--a){var i,l=t[a];if("[]"===l&&n.parseArrays)i=n.allowEmptyArrays&&""===o?[]:[].concat(o);else{i=n.plainObjects?Object.create(null):{};var c="["===l.charAt(0)&&"]"===l.charAt(l.length-1)?l.slice(1,-1):l,u=n.decodeDotInKeys?c.replace(/%2E/g,"."):c,d=parseInt(u,10);n.parseArrays||""!==u?!isNaN(d)&&l!==u&&String(d)===u&&d>=0&&n.parseArrays&&d<=n.arrayLimit?(i=[])[d]=o:"__proto__"!==u&&(i[u]=o):i={0:o}}o=i}return o}(u,e,n,r)}};t.exports=function(t,e){var n=function(t){if(!t)return i;if(void 0!==t.allowEmptyArrays&&"boolean"!=typeof t.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(void 0!==t.decodeDotInKeys&&"boolean"!=typeof t.decodeDotInKeys)throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==t.decoder&&void 0!==t.decoder&&"function"!=typeof t.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==t.charset&&"utf-8"!==t.charset&&"iso-8859-1"!==t.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var e=void 0===t.charset?i.charset:t.charset,n=void 0===t.duplicates?i.duplicates:t.duplicates;if("combine"!==n&&"first"!==n&&"last"!==n)throw new TypeError("The duplicates option must be either combine, first, or last");return{allowDots:void 0===t.allowDots?!0===t.decodeDotInKeys||i.allowDots:!!t.allowDots,allowEmptyArrays:"boolean"==typeof t.allowEmptyArrays?!!t.allowEmptyArrays:i.allowEmptyArrays,allowPrototypes:"boolean"==typeof t.allowPrototypes?t.allowPrototypes:i.allowPrototypes,allowSparse:"boolean"==typeof t.allowSparse?t.allowSparse:i.allowSparse,arrayLimit:"number"==typeof t.arrayLimit?t.arrayLimit:i.arrayLimit,charset:e,charsetSentinel:"boolean"==typeof t.charsetSentinel?t.charsetSentinel:i.charsetSentinel,comma:"boolean"==typeof t.comma?t.comma:i.comma,decodeDotInKeys:"boolean"==typeof t.decodeDotInKeys?t.decodeDotInKeys:i.decodeDotInKeys,decoder:"function"==typeof t.decoder?t.decoder:i.decoder,delimiter:"string"==typeof t.delimiter||r.isRegExp(t.delimiter)?t.delimiter:i.delimiter,depth:"number"==typeof t.depth||!1===t.depth?+t.depth:i.depth,duplicates:n,ignoreQueryPrefix:!0===t.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof t.interpretNumericEntities?t.interpretNumericEntities:i.interpretNumericEntities,parameterLimit:"number"==typeof t.parameterLimit?t.parameterLimit:i.parameterLimit,parseArrays:!1!==t.parseArrays,plainObjects:"boolean"==typeof t.plainObjects?t.plainObjects:i.plainObjects,strictNullHandling:"boolean"==typeof t.strictNullHandling?t.strictNullHandling:i.strictNullHandling}}(e);if(""===t||null==t)return n.plainObjects?Object.create(null):{};for(var u="string"==typeof t?function(t,e){var n,c={__proto__:null},u=e.ignoreQueryPrefix?t.replace(/^\?/,""):t,d=e.parameterLimit===1/0?void 0:e.parameterLimit,p=u.split(e.delimiter,d),h=-1,f=e.charset;if(e.charsetSentinel)for(n=0;n<p.length;++n)0===p[n].indexOf("utf8=")&&("utf8=%E2%9C%93"===p[n]?f="utf-8":"utf8=%26%2310003%3B"===p[n]&&(f="iso-8859-1"),h=n,n=p.length);for(n=0;n<p.length;++n)if(n!==h){var g,m,v=p[n],b=v.indexOf("]="),y=-1===b?v.indexOf("="):b+1;-1===y?(g=e.decoder(v,i.decoder,f,"key"),m=e.strictNullHandling?null:""):(g=e.decoder(v.slice(0,y),i.decoder,f,"key"),m=r.maybeMap(s(v.slice(y+1),e),(function(t){return e.decoder(t,i.decoder,f,"value")}))),m&&e.interpretNumericEntities&&"iso-8859-1"===f&&(m=l(m)),v.indexOf("[]=")>-1&&(m=a(m)?[m]:m);var A=o.call(c,g);A&&"combine"===e.duplicates?c[g]=r.combine(c[g],m):A&&"last"!==e.duplicates||(c[g]=m)}return c}(t,n):t,d=n.plainObjects?Object.create(null):{},p=Object.keys(u),h=0;h<p.length;++h){var f=p[h],g=c(f,u[f],n,"string"==typeof t);d=r.merge(d,g,n)}return!0===n.allowSparse?d:r.compact(d)}},91207:(t,e,n)=>{"use strict";var r=n(920),o=n(62795),a=n(95902),i=Object.prototype.hasOwnProperty,l={brackets:function(t){return t+"[]"},comma:"comma",indices:function(t,e){return t+"["+e+"]"},repeat:function(t){return t}},s=Array.isArray,c=Array.prototype.push,u=function(t,e){c.apply(t,s(e)?e:[e])},d=Date.prototype.toISOString,p=a.default,h={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:o.encode,encodeValuesOnly:!1,format:p,formatter:a.formatters[p],indices:!1,serializeDate:function(t){return d.call(t)},skipNulls:!1,strictNullHandling:!1},f={},g=function t(e,n,a,i,l,c,d,p,g,m,v,b,y,A,_,w,C,k){for(var x,S=e,D=k,E=0,T=!1;void 0!==(D=D.get(f))&&!T;){var O=D.get(e);if(E+=1,void 0!==O){if(O===E)throw new RangeError("Cyclic object value");T=!0}void 0===D.get(f)&&(E=0)}if("function"==typeof m?S=m(n,S):S instanceof Date?S=y(S):"comma"===a&&s(S)&&(S=o.maybeMap(S,(function(t){return t instanceof Date?y(t):t}))),null===S){if(c)return g&&!w?g(n,h.encoder,C,"key",A):n;S=""}if("string"==typeof(x=S)||"number"==typeof x||"boolean"==typeof x||"symbol"==typeof x||"bigint"==typeof x||o.isBuffer(S))return g?[_(w?n:g(n,h.encoder,C,"key",A))+"="+_(g(S,h.encoder,C,"value",A))]:[_(n)+"="+_(String(S))];var I,j=[];if(void 0===S)return j;if("comma"===a&&s(S))w&&g&&(S=o.maybeMap(S,g)),I=[{value:S.length>0?S.join(",")||null:void 0}];else if(s(m))I=m;else{var M=Object.keys(S);I=v?M.sort(v):M}var P=p?n.replace(/\./g,"%2E"):n,L=i&&s(S)&&1===S.length?P+"[]":P;if(l&&s(S)&&0===S.length)return L+"[]";for(var N=0;N<I.length;++N){var B=I[N],F="object"==typeof B&&void 0!==B.value?B.value:S[B];if(!d||null!==F){var R=b&&p?B.replace(/\./g,"%2E"):B,q=s(S)?"function"==typeof a?a(L,R):L:L+(b?"."+R:"["+R+"]");k.set(e,E);var H=r();H.set(f,k),u(j,t(F,q,a,i,l,c,d,p,"comma"===a&&w&&s(S)?null:g,m,v,b,y,A,_,w,C,H))}}return j};t.exports=function(t,e){var n,o=t,c=function(t){if(!t)return h;if(void 0!==t.allowEmptyArrays&&"boolean"!=typeof t.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(void 0!==t.encodeDotInKeys&&"boolean"!=typeof t.encodeDotInKeys)throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==t.encoder&&void 0!==t.encoder&&"function"!=typeof t.encoder)throw new TypeError("Encoder has to be a function.");var e=t.charset||h.charset;if(void 0!==t.charset&&"utf-8"!==t.charset&&"iso-8859-1"!==t.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var n=a.default;if(void 0!==t.format){if(!i.call(a.formatters,t.format))throw new TypeError("Unknown format option provided.");n=t.format}var r,o=a.formatters[n],c=h.filter;if(("function"==typeof t.filter||s(t.filter))&&(c=t.filter),r=t.arrayFormat in l?t.arrayFormat:"indices"in t?t.indices?"indices":"repeat":h.arrayFormat,"commaRoundTrip"in t&&"boolean"!=typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var u=void 0===t.allowDots?!0===t.encodeDotInKeys||h.allowDots:!!t.allowDots;return{addQueryPrefix:"boolean"==typeof t.addQueryPrefix?t.addQueryPrefix:h.addQueryPrefix,allowDots:u,allowEmptyArrays:"boolean"==typeof t.allowEmptyArrays?!!t.allowEmptyArrays:h.allowEmptyArrays,arrayFormat:r,charset:e,charsetSentinel:"boolean"==typeof t.charsetSentinel?t.charsetSentinel:h.charsetSentinel,commaRoundTrip:t.commaRoundTrip,delimiter:void 0===t.delimiter?h.delimiter:t.delimiter,encode:"boolean"==typeof t.encode?t.encode:h.encode,encodeDotInKeys:"boolean"==typeof t.encodeDotInKeys?t.encodeDotInKeys:h.encodeDotInKeys,encoder:"function"==typeof t.encoder?t.encoder:h.encoder,encodeValuesOnly:"boolean"==typeof t.encodeValuesOnly?t.encodeValuesOnly:h.encodeValuesOnly,filter:c,format:n,formatter:o,serializeDate:"function"==typeof t.serializeDate?t.serializeDate:h.serializeDate,skipNulls:"boolean"==typeof t.skipNulls?t.skipNulls:h.skipNulls,sort:"function"==typeof t.sort?t.sort:null,strictNullHandling:"boolean"==typeof t.strictNullHandling?t.strictNullHandling:h.strictNullHandling}}(e);"function"==typeof c.filter?o=(0,c.filter)("",o):s(c.filter)&&(n=c.filter);var d=[];if("object"!=typeof o||null===o)return"";var p=l[c.arrayFormat],f="comma"===p&&c.commaRoundTrip;n||(n=Object.keys(o)),c.sort&&n.sort(c.sort);for(var m=r(),v=0;v<n.length;++v){var b=n[v];c.skipNulls&&null===o[b]||u(d,g(o[b],b,p,f,c.allowEmptyArrays,c.strictNullHandling,c.skipNulls,c.encodeDotInKeys,c.encode?c.encoder:null,c.filter,c.sort,c.allowDots,c.serializeDate,c.format,c.formatter,c.encodeValuesOnly,c.charset,m))}var y=d.join(c.delimiter),A=!0===c.addQueryPrefix?"?":"";return c.charsetSentinel&&("iso-8859-1"===c.charset?A+="utf8=%26%2310003%3B&":A+="utf8=%E2%9C%93&"),y.length>0?A+y:""}},62795:(t,e,n)=>{"use strict";var r=n(95902),o=Object.prototype.hasOwnProperty,a=Array.isArray,i=function(){for(var t=[],e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t}(),l=function(t,e){for(var n=e&&e.plainObjects?Object.create(null):{},r=0;r<t.length;++r)void 0!==t[r]&&(n[r]=t[r]);return n};t.exports={arrayToObject:l,assign:function(t,e){return Object.keys(e).reduce((function(t,n){return t[n]=e[n],t}),t)},combine:function(t,e){return[].concat(t,e)},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],n=[],r=0;r<e.length;++r)for(var o=e[r],i=o.obj[o.prop],l=Object.keys(i),s=0;s<l.length;++s){var c=l[s],u=i[c];"object"==typeof u&&null!==u&&-1===n.indexOf(u)&&(e.push({obj:i,prop:c}),n.push(u))}return function(t){for(;t.length>1;){var e=t.pop(),n=e.obj[e.prop];if(a(n)){for(var r=[],o=0;o<n.length;++o)void 0!==n[o]&&r.push(n[o]);e.obj[e.prop]=r}}}(e),t},decode:function(t,e,n){var r=t.replace(/\+/g," ");if("iso-8859-1"===n)return r.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(r)}catch(t){return r}},encode:function(t,e,n,o,a){if(0===t.length)return t;var l=t;if("symbol"==typeof t?l=Symbol.prototype.toString.call(t):"string"!=typeof t&&(l=String(t)),"iso-8859-1"===n)return escape(l).replace(/%u[0-9a-f]{4}/gi,(function(t){return"%26%23"+parseInt(t.slice(2),16)+"%3B"}));for(var s="",c=0;c<l.length;++c){var u=l.charCodeAt(c);45===u||46===u||95===u||126===u||u>=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122||a===r.RFC1738&&(40===u||41===u)?s+=l.charAt(c):u<128?s+=i[u]:u<2048?s+=i[192|u>>6]+i[128|63&u]:u<55296||u>=57344?s+=i[224|u>>12]+i[128|u>>6&63]+i[128|63&u]:(c+=1,u=65536+((1023&u)<<10|1023&l.charCodeAt(c)),s+=i[240|u>>18]+i[128|u>>12&63]+i[128|u>>6&63]+i[128|63&u])}return s},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},maybeMap:function(t,e){if(a(t)){for(var n=[],r=0;r<t.length;r+=1)n.push(e(t[r]));return n}return e(t)},merge:function t(e,n,r){if(!n)return e;if("object"!=typeof n){if(a(e))e.push(n);else{if(!e||"object"!=typeof e)return[e,n];(r&&(r.plainObjects||r.allowPrototypes)||!o.call(Object.prototype,n))&&(e[n]=!0)}return e}if(!e||"object"!=typeof e)return[e].concat(n);var i=e;return a(e)&&!a(n)&&(i=l(e,r)),a(e)&&a(n)?(n.forEach((function(n,a){if(o.call(e,a)){var i=e[a];i&&"object"==typeof i&&n&&"object"==typeof n?e[a]=t(i,n,r):e.push(n)}else e[a]=n})),e):Object.keys(n).reduce((function(e,a){var i=n[a];return o.call(e,a)?e[a]=t(e[a],i,r):e[a]=i,e}),i)}}},88835:(t,e,n)=>{"use strict";var r=n(61270);function o(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var a=/^([a-z0-9.+-]+:)/i,i=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/,s=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(s),u=["%","/","?",";","#"].concat(c),d=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=n(63098);function b(t,e,n){if(t&&"object"==typeof t&&t instanceof o)return t;var r=new o;return r.parse(t,e,n),r}o.prototype.parse=function(t,e,n){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),i=-1!==o&&o<t.indexOf("#")?"?":"#",s=t.split(i);s[0]=s[0].replace(/\\/g,"/");var b=t=s.join(i);if(b=b.trim(),!n&&1===t.split("#").length){var y=l.exec(b);if(y)return this.path=b,this.href=b,this.pathname=y[1],y[2]?(this.search=y[2],this.query=e?v.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var A=a.exec(b);if(A){var _=(A=A[0]).toLowerCase();this.protocol=_,b=b.substr(A.length)}if(n||A||b.match(/^\/\/[^@/]+@[^@/]+/)){var w="//"===b.substr(0,2);!w||A&&g[A]||(b=b.substr(2),this.slashes=!0)}if(!g[A]&&(w||A&&!m[A])){for(var C,k,x=-1,S=0;S<d.length;S++)-1!==(D=b.indexOf(d[S]))&&(-1===x||D<x)&&(x=D);for(-1!==(k=-1===x?b.lastIndexOf("@"):b.lastIndexOf("@",x))&&(C=b.slice(0,k),b=b.slice(k+1),this.auth=decodeURIComponent(C)),x=-1,S=0;S<u.length;S++){var D;-1!==(D=b.indexOf(u[S]))&&(-1===x||D<x)&&(x=D)}-1===x&&(x=b.length),this.host=b.slice(0,x),b=b.slice(x),this.parseHost(),this.hostname=this.hostname||"";var E="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!E)for(var T=this.hostname.split(/\./),O=(S=0,T.length);S<O;S++){var I=T[S];if(I&&!I.match(p)){for(var j="",M=0,P=I.length;M<P;M++)I.charCodeAt(M)>127?j+="x":j+=I[M];if(!j.match(p)){var L=T.slice(0,S),N=T.slice(S+1),B=I.match(h);B&&(L.push(B[1]),N.unshift(B[2])),N.length&&(b="/"+N.join(".")+b),this.hostname=L.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),E||(this.hostname=r.toASCII(this.hostname));var F=this.port?":"+this.port:"",R=this.hostname||"";this.host=R+F,this.href+=this.host,E&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!f[_])for(S=0,O=c.length;S<O;S++){var q=c[S];if(-1!==b.indexOf(q)){var H=encodeURIComponent(q);H===q&&(H=escape(q)),b=b.split(q).join(H)}}var U=b.indexOf("#");-1!==U&&(this.hash=b.substr(U),b=b.slice(0,U));var V=b.indexOf("?");if(-1!==V?(this.search=b.substr(V),this.query=b.substr(V+1),e&&(this.query=v.parse(this.query)),b=b.slice(0,V)):e&&(this.search="",this.query={}),b&&(this.pathname=b),m[_]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){F=this.pathname||"";var z=this.search||"";this.path=F+z}return this.href=this.format(),this},o.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",n=this.pathname||"",r=this.hash||"",o=!1,a="";this.host?o=t+this.host:this.hostname&&(o=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&"object"==typeof this.query&&Object.keys(this.query).length&&(a=v.stringify(this.query,{arrayFormat:"repeat",addQueryPrefix:!1}));var i=this.search||a&&"?"+a||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||m[e])&&!1!==o?(o="//"+(o||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):o||(o=""),r&&"#"!==r.charAt(0)&&(r="#"+r),i&&"?"!==i.charAt(0)&&(i="?"+i),e+o+(n=n.replace(/[?#]/g,(function(t){return encodeURIComponent(t)})))+(i=i.replace("#","%23"))+r},o.prototype.resolve=function(t){return this.resolveObject(b(t,!1,!0)).format()},o.prototype.resolveObject=function(t){if("string"==typeof t){var e=new o;e.parse(t,!1,!0),t=e}for(var n=new o,r=Object.keys(this),a=0;a<r.length;a++){var i=r[a];n[i]=this[i]}if(n.hash=t.hash,""===t.href)return n.href=n.format(),n;if(t.slashes&&!t.protocol){for(var l=Object.keys(t),s=0;s<l.length;s++){var c=l[s];"protocol"!==c&&(n[c]=t[c])}return m[n.protocol]&&n.hostname&&!n.pathname&&(n.pathname="/",n.path=n.pathname),n.href=n.format(),n}if(t.protocol&&t.protocol!==n.protocol){if(!m[t.protocol]){for(var u=Object.keys(t),d=0;d<u.length;d++){var p=u[d];n[p]=t[p]}return n.href=n.format(),n}if(n.protocol=t.protocol,t.host||g[t.protocol])n.pathname=t.pathname;else{for(var h=(t.pathname||"").split("/");h.length&&!(t.host=h.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==h[0]&&h.unshift(""),h.length<2&&h.unshift(""),n.pathname=h.join("/")}if(n.search=t.search,n.query=t.query,n.host=t.host||"",n.auth=t.auth,n.hostname=t.hostname||t.host,n.port=t.port,n.pathname||n.search){var f=n.pathname||"",v=n.search||"";n.path=f+v}return n.slashes=n.slashes||t.slashes,n.href=n.format(),n}var b=n.pathname&&"/"===n.pathname.charAt(0),y=t.host||t.pathname&&"/"===t.pathname.charAt(0),A=y||b||n.host&&t.pathname,_=A,w=n.pathname&&n.pathname.split("/")||[],C=(h=t.pathname&&t.pathname.split("/")||[],n.protocol&&!m[n.protocol]);if(C&&(n.hostname="",n.port=null,n.host&&(""===w[0]?w[0]=n.host:w.unshift(n.host)),n.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===h[0]?h[0]=t.host:h.unshift(t.host)),t.host=null),A=A&&(""===h[0]||""===w[0])),y)n.host=t.host||""===t.host?t.host:n.host,n.hostname=t.hostname||""===t.hostname?t.hostname:n.hostname,n.search=t.search,n.query=t.query,w=h;else if(h.length)w||(w=[]),w.pop(),w=w.concat(h),n.search=t.search,n.query=t.query;else if(null!=t.search)return C&&(n.host=w.shift(),n.hostname=n.host,(E=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=E.shift(),n.hostname=E.shift(),n.host=n.hostname)),n.search=t.search,n.query=t.query,null===n.pathname&&null===n.search||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!w.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var k=w.slice(-1)[0],x=(n.host||t.host||w.length>1)&&("."===k||".."===k)||""===k,S=0,D=w.length;D>=0;D--)"."===(k=w[D])?w.splice(D,1):".."===k?(w.splice(D,1),S++):S&&(w.splice(D,1),S--);if(!A&&!_)for(;S--;S)w.unshift("..");!A||""===w[0]||w[0]&&"/"===w[0].charAt(0)||w.unshift(""),x&&"/"!==w.join("/").substr(-1)&&w.push("");var E,T=""===w[0]||w[0]&&"/"===w[0].charAt(0);return C&&(n.hostname=T?"":w.length?w.shift():"",n.host=n.hostname,(E=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=E.shift(),n.hostname=E.shift(),n.host=n.hostname)),(A=A||n.host&&w.length)&&!T&&w.unshift(""),w.length>0?n.pathname=w.join("/"):(n.pathname=null,n.path=null),null===n.pathname&&null===n.search||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},o.prototype.parseHost=function(){var t=this.host,e=i.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},42634:()=>{}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=o,e=[],i.O=(t,n,r,o)=>{if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],r=e[u][1],o=e[u][2];for(var l=!0,s=0;s<n.length;s++)(!1&o||a>=o)&&Object.keys(i.O).every((t=>i.O[t](n[s])))?n.splice(s--,1):(l=!1,o<a&&(a=o));if(l){e.splice(u--,1);var c=r();void 0!==c&&(t=c)}}return t}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce(((e,n)=>(i.f[n](t,e),e)),[])),i.u=t=>t+"-"+t+".js?v="+{4065:"f1139ec30708e44e1094",4254:"96661b9f421b07ce7189"}[t],i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n={},r="nextcloud:",i.l=(t,e,o,a)=>{if(n[t])n[t].push(e);else{var l,s;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==r+o){l=d;break}}l||(s=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,i.nc&&l.setAttribute("nonce",i.nc),l.setAttribute("data-webpack",r+o),l.src=t),n[t]=[e];var p=(e,r)=>{l.onerror=l.onload=null,clearTimeout(h);var o=n[t];if(delete n[t],l.parentNode&&l.parentNode.removeChild(l),o&&o.forEach((t=>t(r))),e)return e(r)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=p.bind(null,l.onerror),l.onload=p.bind(null,l.onload),s&&document.head.appendChild(l)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=6673,(()=>{var t;i.g.importScripts&&(t=i.g.location+"");var e=i.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b=document.baseURI||self.location.href;var t={6673:0};i.f.j=(e,n)=>{var r=i.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise(((n,o)=>r=t[e]=[n,o]));n.push(r[2]=o);var a=i.p+i.u(e),l=new Error;i.l(a,(n=>{if(i.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;l.message="Loading chunk "+e+" failed.\n("+o+": "+a+")",l.name="ChunkLoadError",l.type=o,l.request=a,r[1](l)}}),"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,n)=>{var r,o,a=n[0],l=n[1],s=n[2],c=0;if(a.some((e=>0!==t[e]))){for(r in l)i.o(l,r)&&(i.m[r]=l[r]);if(s)var u=s(i)}for(e&&e(n);c<a.length;c++)o=a[c],i.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),i.nc=void 0;var l=i.O(void 0,[4208],(()=>i(34314)));l=i.O(l)})(); -//# sourceMappingURL=theming-personal-theming.js.map?v=54ce2044cd49458ac214
\ No newline at end of file +(()=>{var e,n,r,o={65497:(e,n,r)=>{"use strict";var o=r(21777),a=r(85471),i=r(63814),l=r(32981),s=r(26287),c=r(32073),u=r(88837),d=r(85168),p=(r(93525),r(17334)),h=r.n(p),f=r(69606),g=r(54332),m=r(64866),v=r.n(m),b=r(85338),y=r(24325);const A={name:"ImageEditIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}};var w=r(14486);const _=(0,w.A)(A,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon image-edit-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var C=r(96763);const k=(0,l.C)("theming","backgroundImage"),x=(0,l.C)("theming","shippedBackgrounds"),S=(0,l.C)("theming","themingDefaultBackground"),D=(0,l.C)("theming","defaultShippedBackground"),E=t=>(0,i.fg)("theming","","img/background/")+t,T={name:"BackgroundSettings",components:{Check:b.A,Close:y.A,ImageEdit:_,NcButton:g.A,NcColorPicker:f.N},data:()=>({loading:!1,Theming:(0,l.C)("theming","data",{}),backgroundImage:k}),computed:{shippedBackgrounds(){return Object.keys(x).map((t=>({name:t,url:E(t),preview:E("preview/"+t),details:x[t]}))).filter((t=>!(!this.isGlobalBackgroundDeleted&&!this.isGlobalBackgroundDefault)||t.name!==D))},isGlobalBackgroundDefault:()=>!!S,isGlobalBackgroundDeleted:()=>"backgroundColor"===S,isBackgroundDisabled(){return"disabled"===this.backgroundImage||!this.backgroundImage}},methods:{invertTextColor(t){return this.calculateLuma(t)>.6},calculateLuma(t){const[e,n,r]=this.hexToRGB(t);return(.2126*e+.7152*n+.0722*r)/255},hexToRGB(t){const e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return e?[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]:null},async update(t){this.backgroundImage=t.backgroundImage,this.Theming.color=t.backgroundColor,this.$emit("update:background"),this.loading=!1},async setDefault(){this.loading="default";const t=await s.A.post((0,i.Jv)("/apps/theming/background/default"));this.update(t.data)},async setShipped(t){this.loading=t;const e=await s.A.post((0,i.Jv)("/apps/theming/background/shipped"),{value:t});this.update(e.data)},async setFile(t){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.loading="custom";const n=await s.A.post((0,i.Jv)("/apps/theming/background/custom"),{value:t,color:e});this.update(n.data)},async removeBackground(){this.loading="remove";const t=await s.A.delete((0,i.Jv)("/apps/theming/background/custom"));this.update(t.data)},async pickColor(t){var e,n;this.loading="color";const r=(null==t||null===(e=t.target)||void 0===e||null===(e=e.dataset)||void 0===e?void 0:e.color)||(null===(n=this.Theming)||void 0===n?void 0:n.color)||"#0082c9",o=await s.A.post((0,i.Jv)("/apps/theming/background/color"),{color:r});this.update(o.data)},debouncePickColor:h()((function(){this.pickColor(...arguments)}),200),pickFile(){(0,d.a1)(t("theming","Select a background from your files")).allowDirectories(!1).setMimeTypeFilter(["image/png","image/gif","image/jpeg","image/svg+xml","image/svg"]).setMultiSelect(!1).addButton({id:"select",label:t("theming","Select background"),callback:t=>{var e;this.applyFile(null===(e=t[0])||void 0===e?void 0:e.path)},type:"primary"}).build().pick()},async applyFile(e){if(!e||"string"!=typeof e||0===e.trim().length||"/"===e)return C.error("No valid background have been selected",{path:e}),void(0,d.Qg)(t("theming","No background has been selected"));this.loading="custom";let n=null,r=null;try{var a;const t=(0,i.dC)("dav/files/"+(0,o.HW)().uid+e);n=await s.A.get(t,{responseType:"blob"});const l=URL.createObjectURL(n.data),c=await this.getColorPaletteFromBlob(l);r=null==c||null===(a=c.DarkVibrant)||void 0===a?void 0:a.hex,this.setFile(e,r),C.debug("Extracted colour",r,"from custom image",e,c)}catch(t){this.setFile(e),C.error("Unable to extract colour from custom image",{error:t,path:e,response:n,color:r})}},getColorPaletteFromBlob:t=>new Promise(((e,n)=>{new(v())(t).getPalette(((t,r)=>{t&&n(t),e(r)}))}))}};var O=r(85072),I=r.n(O),j=r(97825),M=r.n(j),P=r(77659),L=r.n(P),N=r(55056),B=r.n(N),F=r(10540),R=r.n(F),q=r(41113),H=r.n(q),U=r(49370),V={};V.styleTagTransform=H(),V.setAttributes=B(),V.insert=L().bind(null,"head"),V.domAPI=M(),V.insertStyleElement=R(),I()(U.A,V),U.A&&U.A.locals&&U.A.locals;const z=(0,w.A)(T,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"background-selector",attrs:{"data-user-theming-background-settings":""}},[e("button",{class:{"icon-loading":"custom"===t.loading,"background background__filepicker":!0,"background--active":"custom"===t.backgroundImage},attrs:{"aria-pressed":"custom"===t.backgroundImage,"data-color-bright":t.invertTextColor(t.Theming.color),"data-user-theming-background-custom":"",tabindex:"0"},on:{click:t.pickFile}},[t._v("\n\t\t"+t._s(t.t("theming","Custom background"))+"\n\t\t"),"custom"!==t.backgroundImage?e("ImageEdit",{attrs:{size:26}}):t._e(),t._v(" "),e("Check",{attrs:{size:44}})],1),t._v(" "),e("button",{class:{"icon-loading":"default"===t.loading,"background background__default":!0,"background--active":"default"===t.backgroundImage},style:{"--border-color":t.Theming.defaultColor},attrs:{"aria-pressed":"default"===t.backgroundImage,"data-color-bright":t.invertTextColor(t.Theming.defaultColor),"data-user-theming-background-default":"",tabindex:"0"},on:{click:t.setDefault}},[t._v("\n\t\t"+t._s(t.t("theming","Default background"))+"\n\t\t"),e("Check",{attrs:{size:44}})],1),t._v(" "),e("div",{staticClass:"background-color",attrs:{"data-user-theming-background-color":""}},[e("NcColorPicker",{on:{input:t.debouncePickColor},model:{value:t.Theming.color,callback:function(e){t.$set(t.Theming,"color",e)},expression:"Theming.color"}},[e("NcButton",{attrs:{type:"ternary"}},[t._v("\n\t\t\t\t"+t._s(t.t("theming","Change color"))+"\n\t\t\t")])],1)],1),t._v(" "),e("button",{class:{"background background__delete":!0,"background--active":t.isBackgroundDisabled},attrs:{"aria-pressed":t.isBackgroundDisabled,"data-user-theming-background-clear":"",tabindex:"0"},on:{click:t.removeBackground}},[t._v("\n\t\t"+t._s(t.t("theming","No background"))+"\n\t\t"),t.isBackgroundDisabled?t._e():e("Close",{attrs:{size:32}}),t._v(" "),e("Check",{attrs:{size:44}})],1),t._v(" "),t._l(t.shippedBackgrounds,(function(n){return e("button",{key:n.name,class:{"background background__shipped":!0,"icon-loading":t.loading===n.name,"background--active":t.backgroundImage===n.name},style:{backgroundImage:"url("+n.preview+")","--border-color":n.details.primary_color},attrs:{title:n.details.attribution,"aria-label":n.details.description,"aria-pressed":t.backgroundImage===n.name,"data-color-bright":"dark"===n.details.theming,"data-user-theming-background-shipped":n.name,tabindex:"0"},on:{click:function(e){return t.setShipped(n.name)}}},[e("Check",{attrs:{size:44}})],1)}))],2)}),[],!1,null,"1175e65a",null).exports;var W=r(96763);const Y={name:"ItemPreview",components:{NcCheckboxRadioSwitch:c.A},props:{enforced:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},theme:{type:Object,required:!0},type:{type:String,default:""},unique:{type:Boolean,default:!1}},computed:{switchType(){return this.unique?"switch":"radio"},name(){return this.unique?null:this.type},img(){return(0,i.fg)("theming","img",this.theme.id+".jpg")},checked:{get(){return this.selected},set(t){this.enforced||(W.debug("Changed theme",this.theme.id,t),this.unique?this.$emit("change",{enabled:!0===t,id:this.theme.id}):this.$emit("change",{enabled:!0,id:this.theme.id}))}}},methods:{onToggle(){this.enforced||("radio"!==this.switchType?this.checked=!this.checked:this.checked=!0)}}};var G=r(16743),K={};K.styleTagTransform=H(),K.setAttributes=B(),K.insert=L().bind(null,"head"),K.domAPI=M(),K.insertStyleElement=R(),I()(G.A,K),G.A&&G.A.locals&&G.A.locals;const X=(0,w.A)(Y,(function(){var t=this,e=t._self._c;return e("div",{staticClass:"theming__preview",class:"theming__preview--"+t.theme.id},[e("div",{staticClass:"theming__preview-image",style:{backgroundImage:"url("+t.img+")"},on:{click:t.onToggle}}),t._v(" "),e("div",{staticClass:"theming__preview-description"},[e("h3",[t._v(t._s(t.theme.title))]),t._v(" "),e("p",{staticClass:"theming__preview-explanation"},[t._v(t._s(t.theme.description))]),t._v(" "),t.enforced?e("span",{staticClass:"theming__preview-warning",attrs:{role:"note"}},[t._v("\n\t\t\t"+t._s(t.t("theming","Theme selection is enforced"))+"\n\t\t")]):t._e(),t._v(" "),e("NcCheckboxRadioSwitch",{directives:[{name:"show",rawName:"v-show",value:!t.enforced,expression:"!enforced"}],staticClass:"theming__preview-toggle",attrs:{checked:t.checked,disabled:t.enforced,name:t.name,type:t.switchType},on:{"update:checked":function(e){t.checked=e}}},[t._v("\n\t\t\t"+t._s(t.theme.enableLabel)+"\n\t\t")])],1)])}),[],!1,null,"63951bb4",null).exports;var $=r(53334),Q=r(13073),J=r(59271);function Z(t){return Z="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Z(t)}function tt(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}function et(){return et=Object.assign||function(t){for(var e=1;e<arguments.length;e++){var n=arguments[e];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(t[r]=n[r])}return t},et.apply(this,arguments)}function nt(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable})))),r.forEach((function(e){tt(t,e,n[e])}))}return t}function rt(t){if("undefined"!=typeof window&&window.navigator)return!!navigator.userAgent.match(t)}var ot=rt(/(?:Trident.*rv[ :]?11\.|msie|iemobile|Windows Phone)/i),at=rt(/Edge/i),it=rt(/firefox/i),lt=rt(/safari/i)&&!rt(/chrome/i)&&!rt(/android/i),st=rt(/iP(ad|od|hone)/i),ct=rt(/chrome/i)&&rt(/android/i),ut={capture:!1,passive:!1};function dt(t,e,n){t.addEventListener(e,n,!ot&&ut)}function pt(t,e,n){t.removeEventListener(e,n,!ot&&ut)}function ht(t,e){if(e){if(">"===e[0]&&(e=e.substring(1)),t)try{if(t.matches)return t.matches(e);if(t.msMatchesSelector)return t.msMatchesSelector(e);if(t.webkitMatchesSelector)return t.webkitMatchesSelector(e)}catch(t){return!1}return!1}}function ft(t){return t.host&&t!==document&&t.host.nodeType?t.host:t.parentNode}function gt(t,e,n,r){if(t){n=n||document;do{if(null!=e&&(">"===e[0]?t.parentNode===n&&ht(t,e):ht(t,e))||r&&t===n)return t;if(t===n)break}while(t=ft(t))}return null}var mt,vt=/\s+/g;function bt(t,e,n){if(t&&e)if(t.classList)t.classList[n?"add":"remove"](e);else{var r=(" "+t.className+" ").replace(vt," ").replace(" "+e+" "," ");t.className=(r+(n?" "+e:"")).replace(vt," ")}}function yt(t,e,n){var r=t&&t.style;if(r){if(void 0===n)return document.defaultView&&document.defaultView.getComputedStyle?n=document.defaultView.getComputedStyle(t,""):t.currentStyle&&(n=t.currentStyle),void 0===e?n:n[e];e in r||-1!==e.indexOf("webkit")||(e="-webkit-"+e),r[e]=n+("string"==typeof n?"":"px")}}function At(t,e){var n="";if("string"==typeof t)n=t;else do{var r=yt(t,"transform");r&&"none"!==r&&(n=r+" "+n)}while(!e&&(t=t.parentNode));var o=window.DOMMatrix||window.WebKitCSSMatrix||window.CSSMatrix||window.MSCSSMatrix;return o&&new o(n)}function wt(t,e,n){if(t){var r=t.getElementsByTagName(e),o=0,a=r.length;if(n)for(;o<a;o++)n(r[o],o);return r}return[]}function _t(){return document.scrollingElement||document.documentElement}function Ct(t,e,n,r,o){if(t.getBoundingClientRect||t===window){var a,i,l,s,c,u,d;if(t!==window&&t!==_t()?(i=(a=t.getBoundingClientRect()).top,l=a.left,s=a.bottom,c=a.right,u=a.height,d=a.width):(i=0,l=0,s=window.innerHeight,c=window.innerWidth,u=window.innerHeight,d=window.innerWidth),(e||n)&&t!==window&&(o=o||t.parentNode,!ot))do{if(o&&o.getBoundingClientRect&&("none"!==yt(o,"transform")||n&&"static"!==yt(o,"position"))){var p=o.getBoundingClientRect();i-=p.top+parseInt(yt(o,"border-top-width")),l-=p.left+parseInt(yt(o,"border-left-width")),s=i+a.height,c=l+a.width;break}}while(o=o.parentNode);if(r&&t!==window){var h=At(o||t),f=h&&h.a,g=h&&h.d;h&&(s=(i/=g)+(u/=g),c=(l/=f)+(d/=f))}return{top:i,left:l,bottom:s,right:c,width:d,height:u}}}function kt(t,e,n){for(var r=Tt(t,!0),o=Ct(t)[e];r;){var a=Ct(r)[n];if(!("top"===n||"left"===n?o>=a:o<=a))return r;if(r===_t())break;r=Tt(r,!1)}return!1}function xt(t,e,n){for(var r=0,o=0,a=t.children;o<a.length;){if("none"!==a[o].style.display&&a[o]!==Oe.ghost&&a[o]!==Oe.dragged&>(a[o],n.draggable,t,!1)){if(r===e)return a[o];r++}o++}return null}function St(t,e){for(var n=t.lastElementChild;n&&(n===Oe.ghost||"none"===yt(n,"display")||e&&!ht(n,e));)n=n.previousElementSibling;return n||null}function Dt(t,e){var n=0;if(!t||!t.parentNode)return-1;for(;t=t.previousElementSibling;)"TEMPLATE"===t.nodeName.toUpperCase()||t===Oe.clone||e&&!ht(t,e)||n++;return n}function Et(t){var e=0,n=0,r=_t();if(t)do{var o=At(t),a=o.a,i=o.d;e+=t.scrollLeft*a,n+=t.scrollTop*i}while(t!==r&&(t=t.parentNode));return[e,n]}function Tt(t,e){if(!t||!t.getBoundingClientRect)return _t();var n=t,r=!1;do{if(n.clientWidth<n.scrollWidth||n.clientHeight<n.scrollHeight){var o=yt(n);if(n.clientWidth<n.scrollWidth&&("auto"==o.overflowX||"scroll"==o.overflowX)||n.clientHeight<n.scrollHeight&&("auto"==o.overflowY||"scroll"==o.overflowY)){if(!n.getBoundingClientRect||n===document.body)return _t();if(r||e)return n;r=!0}}}while(n=n.parentNode);return _t()}function Ot(t,e){return Math.round(t.top)===Math.round(e.top)&&Math.round(t.left)===Math.round(e.left)&&Math.round(t.height)===Math.round(e.height)&&Math.round(t.width)===Math.round(e.width)}function It(t,e){return function(){if(!mt){var n=arguments;1===n.length?t.call(this,n[0]):t.apply(this,n),mt=setTimeout((function(){mt=void 0}),e)}}}function jt(t,e,n){t.scrollLeft+=e,t.scrollTop+=n}function Mt(t){var e=window.Polymer,n=window.jQuery||window.Zepto;return e&&e.dom?e.dom(t).cloneNode(!0):n?n(t).clone(!0)[0]:t.cloneNode(!0)}var Pt="Sortable"+(new Date).getTime();var Lt=[],Nt={initializeByDefault:!0},Bt={mount:function(t){for(var e in Nt)Nt.hasOwnProperty(e)&&!(e in t)&&(t[e]=Nt[e]);Lt.push(t)},pluginEvent:function(t,e,n){var r=this;this.eventCanceled=!1,n.cancel=function(){r.eventCanceled=!0};var o=t+"Global";Lt.forEach((function(r){e[r.pluginName]&&(e[r.pluginName][o]&&e[r.pluginName][o](nt({sortable:e},n)),e.options[r.pluginName]&&e[r.pluginName][t]&&e[r.pluginName][t](nt({sortable:e},n)))}))},initializePlugins:function(t,e,n,r){for(var o in Lt.forEach((function(r){var o=r.pluginName;if(t.options[o]||r.initializeByDefault){var a=new r(t,e,t.options);a.sortable=t,a.options=t.options,t[o]=a,et(n,a.defaults)}})),t.options)if(t.options.hasOwnProperty(o)){var a=this.modifyOption(t,o,t.options[o]);void 0!==a&&(t.options[o]=a)}},getEventProperties:function(t,e){var n={};return Lt.forEach((function(r){"function"==typeof r.eventProperties&&et(n,r.eventProperties.call(e[r.pluginName],t))})),n},modifyOption:function(t,e,n){var r;return Lt.forEach((function(o){t[o.pluginName]&&o.optionListeners&&"function"==typeof o.optionListeners[e]&&(r=o.optionListeners[e].call(t[o.pluginName],n))})),r}};var Ft=function(t,e){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=n.evt,o=function(t,e){if(null==t)return{};var n,r,o=function(t,e){if(null==t)return{};var n,r,o={},a=Object.keys(t);for(r=0;r<a.length;r++)n=a[r],e.indexOf(n)>=0||(o[n]=t[n]);return o}(t,e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);for(r=0;r<a.length;r++)n=a[r],e.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(t,n)&&(o[n]=t[n])}return o}(n,["evt"]);Bt.pluginEvent.bind(Oe)(t,e,nt({dragEl:qt,parentEl:Ht,ghostEl:Ut,rootEl:Vt,nextEl:zt,lastDownEl:Wt,cloneEl:Yt,cloneHidden:Gt,dragStarted:ie,putSortable:Zt,activeSortable:Oe.active,originalEvent:r,oldIndex:Kt,oldDraggableIndex:$t,newIndex:Xt,newDraggableIndex:Qt,hideGhostForTarget:Se,unhideGhostForTarget:De,cloneNowHidden:function(){Gt=!0},cloneNowShown:function(){Gt=!1},dispatchSortableEvent:function(t){Rt({sortable:e,name:t,originalEvent:r})}},o))};function Rt(t){!function(t){var e=t.sortable,n=t.rootEl,r=t.name,o=t.targetEl,a=t.cloneEl,i=t.toEl,l=t.fromEl,s=t.oldIndex,c=t.newIndex,u=t.oldDraggableIndex,d=t.newDraggableIndex,p=t.originalEvent,h=t.putSortable,f=t.extraEventProperties;if(e=e||n&&n[Pt]){var g,m=e.options,v="on"+r.charAt(0).toUpperCase()+r.substr(1);!window.CustomEvent||ot||at?(g=document.createEvent("Event")).initEvent(r,!0,!0):g=new CustomEvent(r,{bubbles:!0,cancelable:!0}),g.to=i||n,g.from=l||n,g.item=o||n,g.clone=a,g.oldIndex=s,g.newIndex=c,g.oldDraggableIndex=u,g.newDraggableIndex=d,g.originalEvent=p,g.pullMode=h?h.lastPutMode:void 0;var b=nt({},f,Bt.getEventProperties(r,e));for(var y in b)g[y]=b[y];n&&n.dispatchEvent(g),m[v]&&m[v].call(e,g)}}(nt({putSortable:Zt,cloneEl:Yt,targetEl:qt,rootEl:Vt,oldIndex:Kt,oldDraggableIndex:$t,newIndex:Xt,newDraggableIndex:Qt},t))}var qt,Ht,Ut,Vt,zt,Wt,Yt,Gt,Kt,Xt,$t,Qt,Jt,Zt,te,ee,ne,re,oe,ae,ie,le,se,ce,ue,de=!1,pe=!1,he=[],fe=!1,ge=!1,me=[],ve=!1,be=[],ye="undefined"!=typeof document,Ae=st,we=at||ot?"cssFloat":"float",_e=ye&&!ct&&!st&&"draggable"in document.createElement("div"),Ce=function(){if(ye){if(ot)return!1;var t=document.createElement("x");return t.style.cssText="pointer-events:auto","auto"===t.style.pointerEvents}}(),ke=function(t,e){var n=yt(t),r=parseInt(n.width)-parseInt(n.paddingLeft)-parseInt(n.paddingRight)-parseInt(n.borderLeftWidth)-parseInt(n.borderRightWidth),o=xt(t,0,e),a=xt(t,1,e),i=o&&yt(o),l=a&&yt(a),s=i&&parseInt(i.marginLeft)+parseInt(i.marginRight)+Ct(o).width,c=l&&parseInt(l.marginLeft)+parseInt(l.marginRight)+Ct(a).width;if("flex"===n.display)return"column"===n.flexDirection||"column-reverse"===n.flexDirection?"vertical":"horizontal";if("grid"===n.display)return n.gridTemplateColumns.split(" ").length<=1?"vertical":"horizontal";if(o&&i.float&&"none"!==i.float){var u="left"===i.float?"left":"right";return!a||"both"!==l.clear&&l.clear!==u?"horizontal":"vertical"}return o&&("block"===i.display||"flex"===i.display||"table"===i.display||"grid"===i.display||s>=r&&"none"===n[we]||a&&"none"===n[we]&&s+c>r)?"vertical":"horizontal"},xe=function(t){function e(t,n){return function(r,o,a,i){var l=r.options.group.name&&o.options.group.name&&r.options.group.name===o.options.group.name;if(null==t&&(n||l))return!0;if(null==t||!1===t)return!1;if(n&&"clone"===t)return t;if("function"==typeof t)return e(t(r,o,a,i),n)(r,o,a,i);var s=(n?r:o).options.group.name;return!0===t||"string"==typeof t&&t===s||t.join&&t.indexOf(s)>-1}}var n={},r=t.group;r&&"object"==Z(r)||(r={name:r}),n.name=r.name,n.checkPull=e(r.pull,!0),n.checkPut=e(r.put),n.revertClone=r.revertClone,t.group=n},Se=function(){!Ce&&Ut&&yt(Ut,"display","none")},De=function(){!Ce&&Ut&&yt(Ut,"display","")};ye&&document.addEventListener("click",(function(t){if(pe)return t.preventDefault(),t.stopPropagation&&t.stopPropagation(),t.stopImmediatePropagation&&t.stopImmediatePropagation(),pe=!1,!1}),!0);var Ee=function(t){if(qt){t=t.touches?t.touches[0]:t;var e=(o=t.clientX,a=t.clientY,he.some((function(t){if(!St(t)){var e=Ct(t),n=t[Pt].options.emptyInsertThreshold,r=o>=e.left-n&&o<=e.right+n,l=a>=e.top-n&&a<=e.bottom+n;return n&&r&&l?i=t:void 0}})),i);if(e){var n={};for(var r in t)t.hasOwnProperty(r)&&(n[r]=t[r]);n.target=n.rootEl=e,n.preventDefault=void 0,n.stopPropagation=void 0,e[Pt]._onDragOver(n)}}var o,a,i},Te=function(t){qt&&qt.parentNode[Pt]._isOutsideThisEl(t.target)};function Oe(t,e){if(!t||!t.nodeType||1!==t.nodeType)throw"Sortable: `el` must be an HTMLElement, not ".concat({}.toString.call(t));this.el=t,this.options=e=et({},e),t[Pt]=this;var n,r,o={group:null,sort:!0,disabled:!1,store:null,handle:null,draggable:/^[uo]l$/i.test(t.nodeName)?">li":">*",swapThreshold:1,invertSwap:!1,invertedSwapThreshold:null,removeCloneOnHide:!0,direction:function(){return ke(t,this.options)},ghostClass:"sortable-ghost",chosenClass:"sortable-chosen",dragClass:"sortable-drag",ignore:"a, img",filter:null,preventOnFilter:!0,animation:0,easing:null,setData:function(t,e){t.setData("Text",e.textContent)},dropBubble:!1,dragoverBubble:!1,dataIdAttr:"data-id",delay:0,delayOnTouchOnly:!1,touchStartThreshold:(Number.parseInt?Number:window).parseInt(window.devicePixelRatio,10)||1,forceFallback:!1,fallbackClass:"sortable-fallback",fallbackOnBody:!1,fallbackTolerance:0,fallbackOffset:{x:0,y:0},supportPointer:!1!==Oe.supportPointer&&"PointerEvent"in window,emptyInsertThreshold:5};for(var a in Bt.initializePlugins(this,t,o),o)!(a in e)&&(e[a]=o[a]);for(var i in xe(e),this)"_"===i.charAt(0)&&"function"==typeof this[i]&&(this[i]=this[i].bind(this));this.nativeDraggable=!e.forceFallback&&_e,this.nativeDraggable&&(this.options.touchStartThreshold=1),e.supportPointer?dt(t,"pointerdown",this._onTapStart):(dt(t,"mousedown",this._onTapStart),dt(t,"touchstart",this._onTapStart)),this.nativeDraggable&&(dt(t,"dragover",this),dt(t,"dragenter",this)),he.push(this.el),e.store&&e.store.get&&this.sort(e.store.get(this)||[]),et(this,(r=[],{captureAnimationState:function(){r=[],this.options.animation&&[].slice.call(this.el.children).forEach((function(t){if("none"!==yt(t,"display")&&t!==Oe.ghost){r.push({target:t,rect:Ct(t)});var e=nt({},r[r.length-1].rect);if(t.thisAnimationDuration){var n=At(t,!0);n&&(e.top-=n.f,e.left-=n.e)}t.fromRect=e}}))},addAnimationState:function(t){r.push(t)},removeAnimationState:function(t){r.splice(function(t,e){for(var n in t)if(t.hasOwnProperty(n))for(var r in e)if(e.hasOwnProperty(r)&&e[r]===t[n][r])return Number(n);return-1}(r,{target:t}),1)},animateAll:function(t){var e=this;if(!this.options.animation)return clearTimeout(n),void("function"==typeof t&&t());var o=!1,a=0;r.forEach((function(t){var n=0,r=t.target,i=r.fromRect,l=Ct(r),s=r.prevFromRect,c=r.prevToRect,u=t.rect,d=At(r,!0);d&&(l.top-=d.f,l.left-=d.e),r.toRect=l,r.thisAnimationDuration&&Ot(s,l)&&!Ot(i,l)&&(u.top-l.top)/(u.left-l.left)==(i.top-l.top)/(i.left-l.left)&&(n=function(t,e,n,r){return Math.sqrt(Math.pow(e.top-t.top,2)+Math.pow(e.left-t.left,2))/Math.sqrt(Math.pow(e.top-n.top,2)+Math.pow(e.left-n.left,2))*r.animation}(u,s,c,e.options)),Ot(l,i)||(r.prevFromRect=i,r.prevToRect=l,n||(n=e.options.animation),e.animate(r,u,l,n)),n&&(o=!0,a=Math.max(a,n),clearTimeout(r.animationResetTimer),r.animationResetTimer=setTimeout((function(){r.animationTime=0,r.prevFromRect=null,r.fromRect=null,r.prevToRect=null,r.thisAnimationDuration=null}),n),r.thisAnimationDuration=n)})),clearTimeout(n),o?n=setTimeout((function(){"function"==typeof t&&t()}),a):"function"==typeof t&&t(),r=[]},animate:function(t,e,n,r){if(r){yt(t,"transition",""),yt(t,"transform","");var o=At(this.el),a=o&&o.a,i=o&&o.d,l=(e.left-n.left)/(a||1),s=(e.top-n.top)/(i||1);t.animatingX=!!l,t.animatingY=!!s,yt(t,"transform","translate3d("+l+"px,"+s+"px,0)"),function(t){t.offsetWidth}(t),yt(t,"transition","transform "+r+"ms"+(this.options.easing?" "+this.options.easing:"")),yt(t,"transform","translate3d(0,0,0)"),"number"==typeof t.animated&&clearTimeout(t.animated),t.animated=setTimeout((function(){yt(t,"transition",""),yt(t,"transform",""),t.animated=!1,t.animatingX=!1,t.animatingY=!1}),r)}}}))}function Ie(t,e,n,r,o,a,i,l){var s,c,u=t[Pt],d=u.options.onMove;return!window.CustomEvent||ot||at?(s=document.createEvent("Event")).initEvent("move",!0,!0):s=new CustomEvent("move",{bubbles:!0,cancelable:!0}),s.to=e,s.from=t,s.dragged=n,s.draggedRect=r,s.related=o||e,s.relatedRect=a||Ct(e),s.willInsertAfter=l,s.originalEvent=i,t.dispatchEvent(s),d&&(c=d.call(u,s,i)),c}function je(t){t.draggable=!1}function Me(){ve=!1}function Pe(t){for(var e=t.tagName+t.className+t.src+t.href+t.textContent,n=e.length,r=0;n--;)r+=e.charCodeAt(n);return r.toString(36)}function Le(t){return setTimeout(t,0)}function Ne(t){return clearTimeout(t)}Oe.prototype={constructor:Oe,_isOutsideThisEl:function(t){this.el.contains(t)||t===this.el||(le=null)},_getDirection:function(t,e){return"function"==typeof this.options.direction?this.options.direction.call(this,t,e,qt):this.options.direction},_onTapStart:function(t){if(t.cancelable){var e=this,n=this.el,r=this.options,o=r.preventOnFilter,a=t.type,i=t.touches&&t.touches[0]||t.pointerType&&"touch"===t.pointerType&&t,l=(i||t).target,s=t.target.shadowRoot&&(t.path&&t.path[0]||t.composedPath&&t.composedPath()[0])||l,c=r.filter;if(function(t){be.length=0;for(var e=t.getElementsByTagName("input"),n=e.length;n--;){var r=e[n];r.checked&&be.push(r)}}(n),!qt&&!(/mousedown|pointerdown/.test(a)&&0!==t.button||r.disabled||s.isContentEditable||(l=gt(l,r.draggable,n,!1))&&l.animated||Wt===l)){if(Kt=Dt(l),$t=Dt(l,r.draggable),"function"==typeof c){if(c.call(this,t,l,this))return Rt({sortable:e,rootEl:s,name:"filter",targetEl:l,toEl:n,fromEl:n}),Ft("filter",e,{evt:t}),void(o&&t.cancelable&&t.preventDefault())}else if(c&&(c=c.split(",").some((function(r){if(r=gt(s,r.trim(),n,!1))return Rt({sortable:e,rootEl:r,name:"filter",targetEl:l,fromEl:n,toEl:n}),Ft("filter",e,{evt:t}),!0}))))return void(o&&t.cancelable&&t.preventDefault());r.handle&&!gt(s,r.handle,n,!1)||this._prepareDragStart(t,i,l)}}},_prepareDragStart:function(t,e,n){var r,o=this,a=o.el,i=o.options,l=a.ownerDocument;if(n&&!qt&&n.parentNode===a){var s=Ct(n);if(Vt=a,Ht=(qt=n).parentNode,zt=qt.nextSibling,Wt=n,Jt=i.group,Oe.dragged=qt,te={target:qt,clientX:(e||t).clientX,clientY:(e||t).clientY},oe=te.clientX-s.left,ae=te.clientY-s.top,this._lastX=(e||t).clientX,this._lastY=(e||t).clientY,qt.style["will-change"]="all",r=function(){Ft("delayEnded",o,{evt:t}),Oe.eventCanceled?o._onDrop():(o._disableDelayedDragEvents(),!it&&o.nativeDraggable&&(qt.draggable=!0),o._triggerDragStart(t,e),Rt({sortable:o,name:"choose",originalEvent:t}),bt(qt,i.chosenClass,!0))},i.ignore.split(",").forEach((function(t){wt(qt,t.trim(),je)})),dt(l,"dragover",Ee),dt(l,"mousemove",Ee),dt(l,"touchmove",Ee),dt(l,"mouseup",o._onDrop),dt(l,"touchend",o._onDrop),dt(l,"touchcancel",o._onDrop),it&&this.nativeDraggable&&(this.options.touchStartThreshold=4,qt.draggable=!0),Ft("delayStart",this,{evt:t}),!i.delay||i.delayOnTouchOnly&&!e||this.nativeDraggable&&(at||ot))r();else{if(Oe.eventCanceled)return void this._onDrop();dt(l,"mouseup",o._disableDelayedDrag),dt(l,"touchend",o._disableDelayedDrag),dt(l,"touchcancel",o._disableDelayedDrag),dt(l,"mousemove",o._delayedDragTouchMoveHandler),dt(l,"touchmove",o._delayedDragTouchMoveHandler),i.supportPointer&&dt(l,"pointermove",o._delayedDragTouchMoveHandler),o._dragStartTimer=setTimeout(r,i.delay)}}},_delayedDragTouchMoveHandler:function(t){var e=t.touches?t.touches[0]:t;Math.max(Math.abs(e.clientX-this._lastX),Math.abs(e.clientY-this._lastY))>=Math.floor(this.options.touchStartThreshold/(this.nativeDraggable&&window.devicePixelRatio||1))&&this._disableDelayedDrag()},_disableDelayedDrag:function(){qt&&je(qt),clearTimeout(this._dragStartTimer),this._disableDelayedDragEvents()},_disableDelayedDragEvents:function(){var t=this.el.ownerDocument;pt(t,"mouseup",this._disableDelayedDrag),pt(t,"touchend",this._disableDelayedDrag),pt(t,"touchcancel",this._disableDelayedDrag),pt(t,"mousemove",this._delayedDragTouchMoveHandler),pt(t,"touchmove",this._delayedDragTouchMoveHandler),pt(t,"pointermove",this._delayedDragTouchMoveHandler)},_triggerDragStart:function(t,e){e=e||"touch"==t.pointerType&&t,!this.nativeDraggable||e?this.options.supportPointer?dt(document,"pointermove",this._onTouchMove):dt(document,e?"touchmove":"mousemove",this._onTouchMove):(dt(qt,"dragend",this),dt(Vt,"dragstart",this._onDragStart));try{document.selection?Le((function(){document.selection.empty()})):window.getSelection().removeAllRanges()}catch(t){}},_dragStarted:function(t,e){if(de=!1,Vt&&qt){Ft("dragStarted",this,{evt:e}),this.nativeDraggable&&dt(document,"dragover",Te);var n=this.options;!t&&bt(qt,n.dragClass,!1),bt(qt,n.ghostClass,!0),Oe.active=this,t&&this._appendGhost(),Rt({sortable:this,name:"start",originalEvent:e})}else this._nulling()},_emulateDragOver:function(){if(ee){this._lastX=ee.clientX,this._lastY=ee.clientY,Se();for(var t=document.elementFromPoint(ee.clientX,ee.clientY),e=t;t&&t.shadowRoot&&(t=t.shadowRoot.elementFromPoint(ee.clientX,ee.clientY))!==e;)e=t;if(qt.parentNode[Pt]._isOutsideThisEl(t),e)do{if(e[Pt]&&e[Pt]._onDragOver({clientX:ee.clientX,clientY:ee.clientY,target:t,rootEl:e})&&!this.options.dragoverBubble)break;t=e}while(e=e.parentNode);De()}},_onTouchMove:function(t){if(te){var e=this.options,n=e.fallbackTolerance,r=e.fallbackOffset,o=t.touches?t.touches[0]:t,a=Ut&&At(Ut,!0),i=Ut&&a&&a.a,l=Ut&&a&&a.d,s=Ae&&ue&&Et(ue),c=(o.clientX-te.clientX+r.x)/(i||1)+(s?s[0]-me[0]:0)/(i||1),u=(o.clientY-te.clientY+r.y)/(l||1)+(s?s[1]-me[1]:0)/(l||1);if(!Oe.active&&!de){if(n&&Math.max(Math.abs(o.clientX-this._lastX),Math.abs(o.clientY-this._lastY))<n)return;this._onDragStart(t,!0)}if(Ut){a?(a.e+=c-(ne||0),a.f+=u-(re||0)):a={a:1,b:0,c:0,d:1,e:c,f:u};var d="matrix(".concat(a.a,",").concat(a.b,",").concat(a.c,",").concat(a.d,",").concat(a.e,",").concat(a.f,")");yt(Ut,"webkitTransform",d),yt(Ut,"mozTransform",d),yt(Ut,"msTransform",d),yt(Ut,"transform",d),ne=c,re=u,ee=o}t.cancelable&&t.preventDefault()}},_appendGhost:function(){if(!Ut){var t=this.options.fallbackOnBody?document.body:Vt,e=Ct(qt,!0,Ae,!0,t),n=this.options;if(Ae){for(ue=t;"static"===yt(ue,"position")&&"none"===yt(ue,"transform")&&ue!==document;)ue=ue.parentNode;ue!==document.body&&ue!==document.documentElement?(ue===document&&(ue=_t()),e.top+=ue.scrollTop,e.left+=ue.scrollLeft):ue=_t(),me=Et(ue)}bt(Ut=qt.cloneNode(!0),n.ghostClass,!1),bt(Ut,n.fallbackClass,!0),bt(Ut,n.dragClass,!0),yt(Ut,"transition",""),yt(Ut,"transform",""),yt(Ut,"box-sizing","border-box"),yt(Ut,"margin",0),yt(Ut,"top",e.top),yt(Ut,"left",e.left),yt(Ut,"width",e.width),yt(Ut,"height",e.height),yt(Ut,"opacity","0.8"),yt(Ut,"position",Ae?"absolute":"fixed"),yt(Ut,"zIndex","100000"),yt(Ut,"pointerEvents","none"),Oe.ghost=Ut,t.appendChild(Ut),yt(Ut,"transform-origin",oe/parseInt(Ut.style.width)*100+"% "+ae/parseInt(Ut.style.height)*100+"%")}},_onDragStart:function(t,e){var n=this,r=t.dataTransfer,o=n.options;Ft("dragStart",this,{evt:t}),Oe.eventCanceled?this._onDrop():(Ft("setupClone",this),Oe.eventCanceled||((Yt=Mt(qt)).draggable=!1,Yt.style["will-change"]="",this._hideClone(),bt(Yt,this.options.chosenClass,!1),Oe.clone=Yt),n.cloneId=Le((function(){Ft("clone",n),Oe.eventCanceled||(n.options.removeCloneOnHide||Vt.insertBefore(Yt,qt),n._hideClone(),Rt({sortable:n,name:"clone"}))})),!e&&bt(qt,o.dragClass,!0),e?(pe=!0,n._loopId=setInterval(n._emulateDragOver,50)):(pt(document,"mouseup",n._onDrop),pt(document,"touchend",n._onDrop),pt(document,"touchcancel",n._onDrop),r&&(r.effectAllowed="move",o.setData&&o.setData.call(n,r,qt)),dt(document,"drop",n),yt(qt,"transform","translateZ(0)")),de=!0,n._dragStartId=Le(n._dragStarted.bind(n,e,t)),dt(document,"selectstart",n),ie=!0,lt&&yt(document.body,"user-select","none"))},_onDragOver:function(t){var e,n,r,o,a=this.el,i=t.target,l=this.options,s=l.group,c=Oe.active,u=Jt===s,d=l.sort,p=Zt||c,h=this,f=!1;if(!ve){if(void 0!==t.preventDefault&&t.cancelable&&t.preventDefault(),i=gt(i,l.draggable,a,!0),E("dragOver"),Oe.eventCanceled)return f;if(qt.contains(t.target)||i.animated&&i.animatingX&&i.animatingY||h._ignoreWhileAnimating===i)return O(!1);if(pe=!1,c&&!l.disabled&&(u?d||(r=!Vt.contains(qt)):Zt===this||(this.lastPutMode=Jt.checkPull(this,c,qt,t))&&s.checkPut(this,c,qt,t))){if(o="vertical"===this._getDirection(t,i),e=Ct(qt),E("dragOverValid"),Oe.eventCanceled)return f;if(r)return Ht=Vt,T(),this._hideClone(),E("revert"),Oe.eventCanceled||(zt?Vt.insertBefore(qt,zt):Vt.appendChild(qt)),O(!0);var g=St(a,l.draggable);if(!g||function(t,e,n){var r=Ct(St(n.el,n.options.draggable));return e?t.clientX>r.right+10||t.clientX<=r.right&&t.clientY>r.bottom&&t.clientX>=r.left:t.clientX>r.right&&t.clientY>r.top||t.clientX<=r.right&&t.clientY>r.bottom+10}(t,o,this)&&!g.animated){if(g===qt)return O(!1);if(g&&a===t.target&&(i=g),i&&(n=Ct(i)),!1!==Ie(Vt,a,qt,e,i,n,t,!!i))return T(),a.appendChild(qt),Ht=a,I(),O(!0)}else if(i.parentNode===a){n=Ct(i);var m,v,b,y=qt.parentNode!==a,A=!function(t,e,n){var r=n?t.left:t.top,o=n?t.right:t.bottom,a=n?t.width:t.height,i=n?e.left:e.top,l=n?e.right:e.bottom,s=n?e.width:e.height;return r===i||o===l||r+a/2===i+s/2}(qt.animated&&qt.toRect||e,i.animated&&i.toRect||n,o),w=o?"top":"left",_=kt(i,"top","top")||kt(qt,"top","top"),C=_?_.scrollTop:void 0;if(le!==i&&(v=n[w],fe=!1,ge=!A&&l.invertSwap||y),m=function(t,e,n,r,o,a,i,l){var s=r?t.clientY:t.clientX,c=r?n.height:n.width,u=r?n.top:n.left,d=r?n.bottom:n.right,p=!1;if(!i)if(l&&ce<c*o){if(!fe&&(1===se?s>u+c*a/2:s<d-c*a/2)&&(fe=!0),fe)p=!0;else if(1===se?s<u+ce:s>d-ce)return-se}else if(s>u+c*(1-o)/2&&s<d-c*(1-o)/2)return function(t){return Dt(qt)<Dt(t)?1:-1}(e);return(p=p||i)&&(s<u+c*a/2||s>d-c*a/2)?s>u+c/2?1:-1:0}(t,i,n,o,A?1:l.swapThreshold,null==l.invertedSwapThreshold?l.swapThreshold:l.invertedSwapThreshold,ge,le===i),0!==m){var k=Dt(qt);do{k-=m,b=Ht.children[k]}while(b&&("none"===yt(b,"display")||b===Ut))}if(0===m||b===i)return O(!1);le=i,se=m;var x=i.nextElementSibling,S=!1,D=Ie(Vt,a,qt,e,i,n,t,S=1===m);if(!1!==D)return 1!==D&&-1!==D||(S=1===D),ve=!0,setTimeout(Me,30),T(),S&&!x?a.appendChild(qt):i.parentNode.insertBefore(qt,S?x:i),_&&jt(_,0,C-_.scrollTop),Ht=qt.parentNode,void 0===v||ge||(ce=Math.abs(v-Ct(i)[w])),I(),O(!0)}if(a.contains(qt))return O(!1)}return!1}function E(l,s){Ft(l,h,nt({evt:t,isOwner:u,axis:o?"vertical":"horizontal",revert:r,dragRect:e,targetRect:n,canSort:d,fromSortable:p,target:i,completed:O,onMove:function(n,r){return Ie(Vt,a,qt,e,n,Ct(n),t,r)},changed:I},s))}function T(){E("dragOverAnimationCapture"),h.captureAnimationState(),h!==p&&p.captureAnimationState()}function O(e){return E("dragOverCompleted",{insertion:e}),e&&(u?c._hideClone():c._showClone(h),h!==p&&(bt(qt,Zt?Zt.options.ghostClass:c.options.ghostClass,!1),bt(qt,l.ghostClass,!0)),Zt!==h&&h!==Oe.active?Zt=h:h===Oe.active&&Zt&&(Zt=null),p===h&&(h._ignoreWhileAnimating=i),h.animateAll((function(){E("dragOverAnimationComplete"),h._ignoreWhileAnimating=null})),h!==p&&(p.animateAll(),p._ignoreWhileAnimating=null)),(i===qt&&!qt.animated||i===a&&!i.animated)&&(le=null),l.dragoverBubble||t.rootEl||i===document||(qt.parentNode[Pt]._isOutsideThisEl(t.target),!e&&Ee(t)),!l.dragoverBubble&&t.stopPropagation&&t.stopPropagation(),f=!0}function I(){Xt=Dt(qt),Qt=Dt(qt,l.draggable),Rt({sortable:h,name:"change",toEl:a,newIndex:Xt,newDraggableIndex:Qt,originalEvent:t})}},_ignoreWhileAnimating:null,_offMoveEvents:function(){pt(document,"mousemove",this._onTouchMove),pt(document,"touchmove",this._onTouchMove),pt(document,"pointermove",this._onTouchMove),pt(document,"dragover",Ee),pt(document,"mousemove",Ee),pt(document,"touchmove",Ee)},_offUpEvents:function(){var t=this.el.ownerDocument;pt(t,"mouseup",this._onDrop),pt(t,"touchend",this._onDrop),pt(t,"pointerup",this._onDrop),pt(t,"touchcancel",this._onDrop),pt(document,"selectstart",this)},_onDrop:function(t){var e=this.el,n=this.options;Xt=Dt(qt),Qt=Dt(qt,n.draggable),Ft("drop",this,{evt:t}),Ht=qt&&qt.parentNode,Xt=Dt(qt),Qt=Dt(qt,n.draggable),Oe.eventCanceled||(de=!1,ge=!1,fe=!1,clearInterval(this._loopId),clearTimeout(this._dragStartTimer),Ne(this.cloneId),Ne(this._dragStartId),this.nativeDraggable&&(pt(document,"drop",this),pt(e,"dragstart",this._onDragStart)),this._offMoveEvents(),this._offUpEvents(),lt&&yt(document.body,"user-select",""),yt(qt,"transform",""),t&&(ie&&(t.cancelable&&t.preventDefault(),!n.dropBubble&&t.stopPropagation()),Ut&&Ut.parentNode&&Ut.parentNode.removeChild(Ut),(Vt===Ht||Zt&&"clone"!==Zt.lastPutMode)&&Yt&&Yt.parentNode&&Yt.parentNode.removeChild(Yt),qt&&(this.nativeDraggable&&pt(qt,"dragend",this),je(qt),qt.style["will-change"]="",ie&&!de&&bt(qt,Zt?Zt.options.ghostClass:this.options.ghostClass,!1),bt(qt,this.options.chosenClass,!1),Rt({sortable:this,name:"unchoose",toEl:Ht,newIndex:null,newDraggableIndex:null,originalEvent:t}),Vt!==Ht?(Xt>=0&&(Rt({rootEl:Ht,name:"add",toEl:Ht,fromEl:Vt,originalEvent:t}),Rt({sortable:this,name:"remove",toEl:Ht,originalEvent:t}),Rt({rootEl:Ht,name:"sort",toEl:Ht,fromEl:Vt,originalEvent:t}),Rt({sortable:this,name:"sort",toEl:Ht,originalEvent:t})),Zt&&Zt.save()):Xt!==Kt&&Xt>=0&&(Rt({sortable:this,name:"update",toEl:Ht,originalEvent:t}),Rt({sortable:this,name:"sort",toEl:Ht,originalEvent:t})),Oe.active&&(null!=Xt&&-1!==Xt||(Xt=Kt,Qt=$t),Rt({sortable:this,name:"end",toEl:Ht,originalEvent:t}),this.save())))),this._nulling()},_nulling:function(){Ft("nulling",this),Vt=qt=Ht=Ut=zt=Yt=Wt=Gt=te=ee=ie=Xt=Qt=Kt=$t=le=se=Zt=Jt=Oe.dragged=Oe.ghost=Oe.clone=Oe.active=null,be.forEach((function(t){t.checked=!0})),be.length=ne=re=0},handleEvent:function(t){switch(t.type){case"drop":case"dragend":this._onDrop(t);break;case"dragenter":case"dragover":qt&&(this._onDragOver(t),function(t){t.dataTransfer&&(t.dataTransfer.dropEffect="move"),t.cancelable&&t.preventDefault()}(t));break;case"selectstart":t.preventDefault()}},toArray:function(){for(var t,e=[],n=this.el.children,r=0,o=n.length,a=this.options;r<o;r++)gt(t=n[r],a.draggable,this.el,!1)&&e.push(t.getAttribute(a.dataIdAttr)||Pe(t));return e},sort:function(t){var e={},n=this.el;this.toArray().forEach((function(t,r){var o=n.children[r];gt(o,this.options.draggable,n,!1)&&(e[t]=o)}),this),t.forEach((function(t){e[t]&&(n.removeChild(e[t]),n.appendChild(e[t]))}))},save:function(){var t=this.options.store;t&&t.set&&t.set(this)},closest:function(t,e){return gt(t,e||this.options.draggable,this.el,!1)},option:function(t,e){var n=this.options;if(void 0===e)return n[t];var r=Bt.modifyOption(this,t,e);n[t]=void 0!==r?r:e,"group"===t&&xe(n)},destroy:function(){Ft("destroy",this);var t=this.el;t[Pt]=null,pt(t,"mousedown",this._onTapStart),pt(t,"touchstart",this._onTapStart),pt(t,"pointerdown",this._onTapStart),this.nativeDraggable&&(pt(t,"dragover",this),pt(t,"dragenter",this)),Array.prototype.forEach.call(t.querySelectorAll("[draggable]"),(function(t){t.removeAttribute("draggable")})),this._onDrop(),this._disableDelayedDragEvents(),he.splice(he.indexOf(this.el),1),this.el=t=null},_hideClone:function(){if(!Gt){if(Ft("hideClone",this),Oe.eventCanceled)return;yt(Yt,"display","none"),this.options.removeCloneOnHide&&Yt.parentNode&&Yt.parentNode.removeChild(Yt),Gt=!0}},_showClone:function(t){if("clone"===t.lastPutMode){if(Gt){if(Ft("showClone",this),Oe.eventCanceled)return;Vt.contains(qt)&&!this.options.group.revertClone?Vt.insertBefore(Yt,qt):zt?Vt.insertBefore(Yt,zt):Vt.appendChild(Yt),this.options.group.revertClone&&this.animate(qt,Yt),yt(Yt,"display",""),Gt=!1}}else this._hideClone()}},ye&&dt(document,"touchmove",(function(t){(Oe.active||de)&&t.cancelable&&t.preventDefault()})),Oe.utils={on:dt,off:pt,css:yt,find:wt,is:function(t,e){return!!gt(t,e,t,!1)},extend:function(t,e){if(t&&e)for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n]);return t},throttle:It,closest:gt,toggleClass:bt,clone:Mt,index:Dt,nextTick:Le,cancelNextTick:Ne,detectDirection:ke,getChild:xt},Oe.get=function(t){return t[Pt]},Oe.mount=function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];e[0].constructor===Array&&(e=e[0]),e.forEach((function(t){if(!t.prototype||!t.prototype.constructor)throw"Sortable: Mounted plugin must be a constructor function, not ".concat({}.toString.call(t));t.utils&&(Oe.utils=nt({},Oe.utils,t.utils)),Bt.mount(t)}))},Oe.create=function(t,e){return new Oe(t,e)},Oe.version="1.10.2";var Be,Fe,Re,qe,He,Ue,Ve=[],ze=!1;function We(){Ve.forEach((function(t){clearInterval(t.pid)})),Ve=[]}function Ye(){clearInterval(Ue)}var Ge=It((function(t,e,n,r){if(e.scroll){var o,a=(t.touches?t.touches[0]:t).clientX,i=(t.touches?t.touches[0]:t).clientY,l=e.scrollSensitivity,s=e.scrollSpeed,c=_t(),u=!1;Fe!==n&&(Fe=n,We(),Be=e.scroll,o=e.scrollFn,!0===Be&&(Be=Tt(n,!0)));var d=0,p=Be;do{var h=p,f=Ct(h),g=f.top,m=f.bottom,v=f.left,b=f.right,y=f.width,A=f.height,w=void 0,_=void 0,C=h.scrollWidth,k=h.scrollHeight,x=yt(h),S=h.scrollLeft,D=h.scrollTop;h===c?(w=y<C&&("auto"===x.overflowX||"scroll"===x.overflowX||"visible"===x.overflowX),_=A<k&&("auto"===x.overflowY||"scroll"===x.overflowY||"visible"===x.overflowY)):(w=y<C&&("auto"===x.overflowX||"scroll"===x.overflowX),_=A<k&&("auto"===x.overflowY||"scroll"===x.overflowY));var E=w&&(Math.abs(b-a)<=l&&S+y<C)-(Math.abs(v-a)<=l&&!!S),T=_&&(Math.abs(m-i)<=l&&D+A<k)-(Math.abs(g-i)<=l&&!!D);if(!Ve[d])for(var O=0;O<=d;O++)Ve[O]||(Ve[O]={});Ve[d].vx==E&&Ve[d].vy==T&&Ve[d].el===h||(Ve[d].el=h,Ve[d].vx=E,Ve[d].vy=T,clearInterval(Ve[d].pid),0==E&&0==T||(u=!0,Ve[d].pid=setInterval(function(){r&&0===this.layer&&Oe.active._onTouchMove(He);var e=Ve[this.layer].vy?Ve[this.layer].vy*s:0,n=Ve[this.layer].vx?Ve[this.layer].vx*s:0;"function"==typeof o&&"continue"!==o.call(Oe.dragged.parentNode[Pt],n,e,t,He,Ve[this.layer].el)||jt(Ve[this.layer].el,n,e)}.bind({layer:d}),24))),d++}while(e.bubbleScroll&&p!==c&&(p=Tt(p,!1)));ze=u}}),30),Ke=function(t){var e=t.originalEvent,n=t.putSortable,r=t.dragEl,o=t.activeSortable,a=t.dispatchSortableEvent,i=t.hideGhostForTarget,l=t.unhideGhostForTarget;if(e){var s=n||o;i();var c=e.changedTouches&&e.changedTouches.length?e.changedTouches[0]:e,u=document.elementFromPoint(c.clientX,c.clientY);l(),s&&!s.el.contains(u)&&(a("spill"),this.onSpill({dragEl:r,putSortable:n}))}};function Xe(){}function $e(){}Xe.prototype={startIndex:null,dragStart:function(t){var e=t.oldDraggableIndex;this.startIndex=e},onSpill:function(t){var e=t.dragEl,n=t.putSortable;this.sortable.captureAnimationState(),n&&n.captureAnimationState();var r=xt(this.sortable.el,this.startIndex,this.options);r?this.sortable.el.insertBefore(e,r):this.sortable.el.appendChild(e),this.sortable.animateAll(),n&&n.animateAll()},drop:Ke},et(Xe,{pluginName:"revertOnSpill"}),$e.prototype={onSpill:function(t){var e=t.dragEl,n=t.putSortable||this.sortable;n.captureAnimationState(),e.parentNode&&e.parentNode.removeChild(e),n.animateAll()},drop:Ke},et($e,{pluginName:"removeOnSpill"}),Oe.mount(new function(){function t(){for(var t in this.defaults={scroll:!0,scrollSensitivity:30,scrollSpeed:10,bubbleScroll:!0},this)"_"===t.charAt(0)&&"function"==typeof this[t]&&(this[t]=this[t].bind(this))}return t.prototype={dragStarted:function(t){var e=t.originalEvent;this.sortable.nativeDraggable?dt(document,"dragover",this._handleAutoScroll):this.options.supportPointer?dt(document,"pointermove",this._handleFallbackAutoScroll):e.touches?dt(document,"touchmove",this._handleFallbackAutoScroll):dt(document,"mousemove",this._handleFallbackAutoScroll)},dragOverCompleted:function(t){var e=t.originalEvent;this.options.dragOverBubble||e.rootEl||this._handleAutoScroll(e)},drop:function(){this.sortable.nativeDraggable?pt(document,"dragover",this._handleAutoScroll):(pt(document,"pointermove",this._handleFallbackAutoScroll),pt(document,"touchmove",this._handleFallbackAutoScroll),pt(document,"mousemove",this._handleFallbackAutoScroll)),Ye(),We(),clearTimeout(mt),mt=void 0},nulling:function(){He=Fe=Be=ze=Ue=Re=qe=null,Ve.length=0},_handleFallbackAutoScroll:function(t){this._handleAutoScroll(t,!0)},_handleAutoScroll:function(t,e){var n=this,r=(t.touches?t.touches[0]:t).clientX,o=(t.touches?t.touches[0]:t).clientY,a=document.elementFromPoint(r,o);if(He=t,e||at||ot||lt){Ge(t,this.options,a,e);var i=Tt(a,!0);!ze||Ue&&r===Re&&o===qe||(Ue&&Ye(),Ue=setInterval((function(){var a=Tt(document.elementFromPoint(r,o),!0);a!==i&&(i=a,We()),Ge(t,n.options,a,e)}),10),Re=r,qe=o)}else{if(!this.options.bubbleScroll||Tt(a,!0)===_t())return void We();Ge(t,this.options,Tt(a,!1),!1)}}},et(t,{pluginName:"scroll",initializeByDefault:!0})}),Oe.mount($e,Xe);const Qe=Oe;a.Ay.util.warn;var Je=r(54914),Ze=r(10620),tn=r(41645);const en=(0,a.pM)({name:"AppOrderSelectorElement",components:{IconArrowDown:Ze.A,IconArrowUp:tn.A,NcButton:g.A},props:{ariaDescribedby:{type:String,default:null},ariaDetails:{type:String,default:null},app:{type:Object,required:!0},isFirst:{type:Boolean,default:!1},isLast:{type:Boolean,default:!1}},emits:{"move:up":()=>!0,"move:down":()=>!0,"update:focus":()=>!0},setup(t,e){let{emit:n}=e;const r=(0,a.KR)(),o=(0,a.KR)();let i=0;return{buttonUp:r,buttonDown:o,moveUp:()=>{n("move:up"),i=1},moveDown:()=>{n("move:down"),i=-1},keepFocus:()=>{0!==i&&(1!==i&&!t.isLast||t.isFirst?(0,a.dY)((()=>o.value.$el.focus())):(0,a.dY)((()=>r.value.$el.focus()))),i=0},t:$.Tl}}});var nn=r(12182),rn={};rn.styleTagTransform=H(),rn.setAttributes=B(),rn.insert=L().bind(null,"head"),rn.domAPI=M(),rn.insertStyleElement=R(),I()(nn.A,rn),nn.A&&nn.A.locals&&nn.A.locals;const on=(0,w.A)(en,(function(){var t,e=this,n=e._self._c;return e._self._setupProxy,n("li",{class:{"order-selector-element":!0,"order-selector-element--disabled":e.app.default},attrs:{"data-cy-app-order-element":e.app.id},on:{focusin:function(t){return e.$emit("update:focus")}}},[n("svg",{attrs:{width:"20",height:"20",viewBox:"0 0 20 20",role:"presentation"}},[n("image",{staticClass:"order-selector-element__icon",attrs:{preserveAspectRatio:"xMinYMin meet",x:"0",y:"0",width:"20",height:"20","xlink:href":e.app.icon}})]),e._v(" "),n("div",{staticClass:"order-selector-element__label"},[e._v("\n\t\t"+e._s(null!==(t=e.app.label)&&void 0!==t?t:e.app.id)+"\n\t")]),e._v(" "),n("div",{staticClass:"order-selector-element__actions"},[n("NcButton",{directives:[{name:"show",rawName:"v-show",value:!e.isFirst&&!e.app.default,expression:"!isFirst && !app.default"}],ref:"buttonUp",attrs:{"aria-label":e.t("settings","Move up"),"aria-describedby":e.ariaDescribedby,"aria-details":e.ariaDetails,"data-cy-app-order-button":"up",type:"tertiary-no-background"},on:{click:e.moveUp},scopedSlots:e._u([{key:"icon",fn:function(){return[n("IconArrowUp",{attrs:{size:20}})]},proxy:!0}])}),e._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:e.isFirst||!!e.app.default,expression:"isFirst || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}}),e._v(" "),n("NcButton",{directives:[{name:"show",rawName:"v-show",value:!e.isLast&&!e.app.default,expression:"!isLast && !app.default"}],ref:"buttonDown",attrs:{"aria-label":e.t("settings","Move down"),"aria-describedby":e.ariaDescribedby,"aria-details":e.ariaDetails,"data-cy-app-order-button":"down",type:"tertiary-no-background"},on:{click:e.moveDown},scopedSlots:e._u([{key:"icon",fn:function(){return[n("IconArrowDown",{attrs:{size:20}})]},proxy:!0}])}),e._v(" "),n("div",{directives:[{name:"show",rawName:"v-show",value:e.isLast||!!e.app.default,expression:"isLast || !!app.default"}],staticClass:"order-selector-element__placeholder",attrs:{"aria-hidden":"true"}})],1)])}),[],!1,null,"081ebc45",null).exports,an=(0,a.pM)({name:"AppOrderSelector",components:{AppOrderSelectorElement:on,Fragment:Je.F},props:{ariaDetails:{type:String,default:null},value:{type:Array,required:!0}},emits:{"update:value":t=>Array.isArray(t)},setup(t,e){let{emit:n}=e;const r=(0,a.KR)(null),o=(0,a.EW)({get:()=>t.value,set:e=>{const r=[...e].sort(((t,n)=>(n.default?1:0)-(t.default?1:0)||e.indexOf(t)-e.indexOf(n)));r.some(((e,n)=>{let{id:r}=e;return r!==t.value[n].id}))?n("update:value",r):i.value+=1}}),i=(0,a.KR)(0);!function(t,e,n={}){let r;const{document:o=Q.PWG,...i}=n,l={onUpdate:t=>{!function(t,e,n){const r=(0,a.i9)(t),o=r?[...(0,J.BA)(t)]:(0,J.BA)(t);if(n>=0&&n<o.length){const i=o.splice(e,1)[0];(0,a.dY)((()=>{o.splice(n,0,i),r&&(t.value=o)}))}}(e,t.oldIndex,t.newIndex)}},s=()=>{const e="string"==typeof t?null==o?void 0:o.querySelector(t):(0,Q.F4c)(t);e&&void 0===r&&(r=new Qe(e,{...l,...i}))},c=()=>{null==r||r.destroy(),r=void 0};(0,J.rd)(s),(0,J.Uo)(c)}(r,o,{filter:".order-selector-element--disabled"});const l=(0,a.KR)([]);(0,a.$u)((()=>{l.value.forEach((t=>t.keepFocus()))}));const s=(0,a.KR)("");return{appList:o,listElement:r,moveDown:e=>{const r=e>0?t.value.slice(0,e):[];r.push(t.value[e+1]);const o=e<t.value.length-2?t.value.slice(e+2):[];n("update:value",[...r,t.value[e],...o])},moveUp:e=>{var r;const o=e>1?t.value.slice(0,e-1):[];if(null!==(r=t.value[e-1])&&void 0!==r&&r.default)return;const a=[t.value[e-1]];e<t.value.length-1&&a.push(...t.value.slice(e+1)),n("update:value",[...o,t.value[e],...a])},statusInfoId:"sorting-status-info-".concat((Math.random()+1).toString(36).substring(7)),statusInfo:s,updateStatusInfo:e=>{s.value=(0,$.Tl)("theming","Current selected app: {app}, position {position} of {total}",{app:t.value[e].label,position:e+1,total:t.value.length})},renderCount:i,selectorElements:l}}}),ln=an;var sn=r(2254),cn={};cn.styleTagTransform=H(),cn.setAttributes=B(),cn.insert=L().bind(null,"head"),cn.domAPI=M(),cn.insertStyleElement=R(),I()(sn.A,cn),sn.A&&sn.A.locals&&sn.A.locals;var un=(0,w.A)(ln,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("Fragment",[e("div",{staticClass:"hidden-visually",attrs:{id:t.statusInfoId,"aria-live":"polite",role:"status"}},[t._v("\n\t\t"+t._s(t.statusInfo)+"\n\t")]),t._v(" "),e("ol",{ref:"listElement",staticClass:"order-selector",attrs:{"data-cy-app-order":""}},t._l(t.appList,(function(n,r){return e("AppOrderSelectorElement",t._g({key:"".concat(n.id).concat(t.renderCount),ref:"selectorElements",refInFor:!0,attrs:{app:n,"aria-details":t.ariaDetails,"aria-describedby":t.statusInfoId,"is-first":0===r||!!t.appList[r-1].default,"is-last":r===t.value.length-1}},n.default?{}:{"move:up":()=>t.moveUp(r),"move:down":()=>t.moveDown(r),"update:focus":()=>t.updateStatusInfo(r)}))})),1)])}),[],!1,null,"35797e31",null);const dn=un.exports,pn={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},hn=(0,w.A)(pn,(function(){var t=this,e=t._self._c;return e("span",t._b({staticClass:"material-design-icon undo-icon",attrs:{"aria-hidden":!t.title||null,"aria-label":t.title,role:"img"},on:{click:function(e){return t.$emit("click",e)}}},"span",t.$attrs,!1),[e("svg",{staticClass:"material-design-icon__svg",attrs:{fill:t.fillColor,width:t.size,height:t.size,viewBox:"0 0 24 24"}},[e("path",{attrs:{d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"}},[t.title?e("title",[t._v(t._s(t.title))]):t._e()])])])}),[],!1,null,null,null).exports;var fn=r(52201),gn=r(96763);const mn=(0,a.pM)({name:"UserAppMenuSection",components:{AppOrderSelector:dn,IconUndo:hn,NcButton:g.A,NcNoteCard:fn.A,NcSettingsSection:u.A},setup(){const{userAppOrder:t,enforcedDefaultApp:e}=(0,l.C)("theming","navigationBar"),n=Object.values((0,l.C)("core","apps")).filter((t=>{let{type:e}=t;return"link"===e})).map((t=>({...t,label:t.name,default:t.default&&t.app===e}))),r=(0,a.KR)(!Array.isArray(t)||Object.values(t).length>0),o=(0,a.EW)((()=>n.some(((t,e)=>{let{id:n}=t;return n!==h.value[e].id})))),c="theming-apporder-changed-infocard",u="theming-apporder-changed-infocard",p=(0,a.EW)((()=>(o.value?"".concat(c," "):"")+(e?u:""))),h=(0,a.KR)([...n]),f=async(t,e)=>{const n=(0,i.KT)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"core",configKey:t});return await s.A.post(n,{configValue:JSON.stringify(e)})};return{appOrder:h,updateAppOrder:t=>{const e={};t.forEach(((t,n)=>{let{app:r,id:o}=t;e[o]={order:n,app:r}})),f("apporder",e).then((()=>{h.value=t,r.value=!0})).catch((t=>{gn.warn("Could not set the app order",t),(0,d.Qg)((0,$.Tl)("theming","Could not set the app order"))}))},resetAppOrder:async()=>{try{await f("apporder",[]),r.value=!1;const{data:t}=await s.A.get((0,i.KT)("/core/navigation/apps"),{headers:{"OCS-APIRequest":"true"}});h.value=t.ocs.data.map((t=>({...t,label:t.name,default:t.default&&t.app===e})))}catch(t){gn.warn(t),(0,d.Qg)((0,$.Tl)("theming","Could not reset the app order"))}},enforcedDefaultApp:e,hasAppOrderChanged:o,hasCustomAppOrder:r,ariaDetailsAppOrder:p,elementIdAppOrderChanged:c,elementIdEnforcedDefaultApp:u,t:$.Tl}}}),vn=mn;var bn=r(22335),yn={};yn.styleTagTransform=H(),yn.setAttributes=B(),yn.insert=L().bind(null,"head"),yn.domAPI=M(),yn.insertStyleElement=R(),I()(bn.A,yn),bn.A&&bn.A.locals&&bn.A.locals;const An=(0,w.A)(vn,(function(){var t=this,e=t._self._c;return t._self._setupProxy,e("NcSettingsSection",{attrs:{name:t.t("theming","Navigation bar settings")}},[e("p",[t._v("\n\t\t"+t._s(t.t("theming","You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo."))+"\n\t")]),t._v(" "),t.enforcedDefaultApp?e("NcNoteCard",{attrs:{id:t.elementIdEnforcedDefaultApp,type:"info"}},[t._v("\n\t\t"+t._s(t.t("theming","The default app can not be changed because it was configured by the administrator."))+"\n\t")]):t._e(),t._v(" "),t.hasAppOrderChanged?e("NcNoteCard",{attrs:{id:t.elementIdAppOrderChanged,type:"info"}},[t._v("\n\t\t"+t._s(t.t("theming","The app order was changed, to see it in action you have to reload the page."))+"\n\t")]):t._e(),t._v(" "),e("AppOrderSelector",{staticClass:"user-app-menu-order",attrs:{"aria-details":t.ariaDetailsAppOrder,value:t.appOrder},on:{"update:value":t.updateAppOrder}}),t._v(" "),e("NcButton",{attrs:{"data-test-id":"btn-apporder-reset",disabled:!t.hasCustomAppOrder,type:"tertiary"},on:{click:t.resetAppOrder},scopedSlots:t._u([{key:"icon",fn:function(){return[e("IconUndo",{attrs:{size:20}})]},proxy:!0}])},[t._v("\n\t\t"+t._s(t.t("theming","Reset default app order"))+"\n\t")])],1)}),[],!1,null,"ee0f3d1a",null).exports;var wn=r(96763);const _n=(0,l.C)("theming","themes",[]),Cn=(0,l.C)("theming","enforceTheme",""),kn=(0,l.C)("theming","shortcutsDisabled",!1),xn=(0,l.C)("theming","enableBlurFilter",""),Sn=(0,l.C)("theming","isUserThemingDisabled"),Dn={name:"UserThemes",components:{ItemPreview:X,NcCheckboxRadioSwitch:c.A,NcSettingsSection:u.A,BackgroundSettings:z,UserAppMenuSection:An},data:()=>({availableThemes:_n,enforceTheme:Cn,shortcutsDisabled:kn,isUserThemingDisabled:Sn,enableBlurFilter:xn}),computed:{themes(){return this.availableThemes.filter((t=>1===t.type))},fonts(){return this.availableThemes.filter((t=>2===t.type))},selectedTheme(){return this.themes.find((t=>!0===t.enabled))||this.themes[0]},description(){return t("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","</a>")},guidelinesLink:()=>'<a target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noreferrer nofollow">',descriptionDetail(){return t("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"</a>")},issuetrackerLink:()=>'<a target="_blank" href="https://github.com/nextcloud/server/issues/" rel="noreferrer nofollow">',designteamLink:()=>'<a target="_blank" href="https://nextcloud.com/design" rel="noreferrer nofollow">'},watch:{shortcutsDisabled(t){this.changeShortcutsDisabled(t)}},methods:{refreshGlobalStyles(){[...document.head.querySelectorAll("link.theme")].forEach((t=>{const e=new URL(t.href);e.searchParams.set("v",Date.now());const n=t.cloneNode();n.href=e.toString(),n.onload=()=>t.remove(),document.head.append(n)}))},updateBackground(t){this.background="custom"===t.type||"default"===t.type?t.type:t.value,this.refreshGlobalStyles()},changeTheme(t){let{enabled:e,id:n}=t;this.themes.forEach((t=>{t.id===n&&e?t.enabled=!0:t.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,n)},changeFont(t){let{enabled:e,id:n}=t;this.fonts.forEach((t=>{t.id===n&&e?t.enabled=!0:t.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,n)},async changeShortcutsDisabled(t){t?await(0,s.A)({url:(0,i.KT)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),data:{configValue:"yes"},method:"POST"}):await(0,s.A)({url:(0,i.KT)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),method:"DELETE"})},async changeEnableBlurFilter(){this.enableBlurFilter="no"===this.enableBlurFilter?"yes":"no",await(0,s.A)({url:(0,i.KT)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"force_enable_blur_filter"}),data:{configValue:this.enableBlurFilter},method:"POST"}),this.$emit("update:background")},updateBodyAttributes(){const t=this.themes.filter((t=>!0===t.enabled)).map((t=>t.id)),e=this.fonts.filter((t=>!0===t.enabled)).map((t=>t.id));this.themes.forEach((t=>{document.body.toggleAttribute("data-theme-".concat(t.id),t.enabled)})),this.fonts.forEach((t=>{document.body.toggleAttribute("data-theme-".concat(t.id),t.enabled)})),document.body.setAttribute("data-themes",[...t,...e].join(","))},async selectItem(e,n){try{e?await(0,s.A)({url:(0,i.KT)("apps/theming/api/v1/theme/{themeId}/enable",{themeId:n}),method:"PUT"}):await(0,s.A)({url:(0,i.KT)("apps/theming/api/v1/theme/{themeId}",{themeId:n}),method:"DELETE"})}catch(e){wn.error(e,e.response),OC.Notification.showTemporary(t("theming",e.response.data.ocs.meta.message+". Unable to apply the setting."))}}}};var En=r(84232),Tn={};Tn.styleTagTransform=H(),Tn.setAttributes=B(),Tn.insert=L().bind(null,"head"),Tn.domAPI=M(),Tn.insertStyleElement=R(),I()(En.A,Tn),En.A&&En.A.locals&&En.A.locals;const On=(0,w.A)(Dn,(function(){var t=this,e=t._self._c;return e("section",[e("NcSettingsSection",{staticClass:"theming",attrs:{name:t.t("theming","Appearance and accessibility settings"),"limit-width":!1}},[e("p",{domProps:{innerHTML:t._s(t.description)}}),t._v(" "),e("p",{domProps:{innerHTML:t._s(t.descriptionDetail)}}),t._v(" "),e("div",{staticClass:"theming__preview-list"},t._l(t.themes,(function(n){return e("ItemPreview",{key:n.id,attrs:{enforced:n.id===t.enforceTheme,selected:t.selectedTheme.id===n.id,theme:n,unique:1===t.themes.length,type:"theme"},on:{change:t.changeTheme}})})),1),t._v(" "),e("div",{staticClass:"theming__preview-list"},t._l(t.fonts,(function(n){return e("ItemPreview",{key:n.id,attrs:{selected:n.enabled,theme:n,unique:1===t.fonts.length,type:"font"},on:{change:t.changeFont}})})),1),t._v(" "),e("h3",[t._v(t._s(t.t("theming","Misc accessibility options")))]),t._v(" "),e("NcCheckboxRadioSwitch",{attrs:{type:"checkbox",checked:"yes"===t.enableBlurFilter,indeterminate:""===t.enableBlurFilter},on:{"update:checked":t.changeEnableBlurFilter}},[t._v("\n\t\t\t"+t._s(t.t("theming","Enable blur background filter (may increase GPU load)"))+"\n\t\t")])],1),t._v(" "),e("NcSettingsSection",{staticClass:"background",attrs:{name:t.t("theming","Background"),"data-user-theming-background-disabled":""}},[t.isUserThemingDisabled?[e("p",[t._v(t._s(t.t("theming","Customization has been disabled by your administrator")))])]:[e("p",[t._v(t._s(t.t("theming","Set a custom background")))]),t._v(" "),e("BackgroundSettings",{staticClass:"background__grid",on:{"update:background":t.refreshGlobalStyles}})]],2),t._v(" "),e("NcSettingsSection",{attrs:{name:t.t("theming","Keyboard shortcuts")}},[e("p",[t._v(t._s(t.t("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")))]),t._v(" "),e("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:t.shortcutsDisabled,type:"switch"},on:{"update:checked":function(e){t.shortcutsDisabled=e},change:t.changeShortcutsDisabled}},[t._v("\n\t\t\t"+t._s(t.t("theming","Disable all keyboard shortcuts"))+"\n\t\t")])],1),t._v(" "),e("UserAppMenuSection")],1)}),[],!1,null,"1ed3985c",null).exports;r.nc=btoa((0,o.do)()),a.Ay.prototype.OC=OC,a.Ay.prototype.t=t;const In=new(a.Ay.extend(On));In.$mount("#theming"),In.$on("update:background",(()=>{[...document.head.querySelectorAll("link.theme")].forEach((t=>{const e=new URL(t.href);e.searchParams.set("v",Date.now());const n=t.cloneNode();n.href=e.toString(),n.onload=()=>t.remove(),document.head.append(n)}))}))},84232:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".theming p[data-v-1ed3985c]{max-width:800px}.theming[data-v-1ed3985c] a{font-weight:bold}.theming[data-v-1ed3985c] a:hover,.theming[data-v-1ed3985c] a:focus{text-decoration:underline}.theming__preview-list[data-v-1ed3985c]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-1ed3985c]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-1ed3985c]{display:flex;flex-direction:column}}","",{version:3,sources:["webpack://./apps/theming/src/UserThemes.vue"],names:[],mappings:"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA",sourcesContent:["\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n"],sourceRoot:""}]);const l=i},2254:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".order-selector[data-v-35797e31]{width:max-content;min-width:260px}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelector.vue"],names:[],mappings:"AACA,iCACC,iBAAA,CACA,eAAA",sourcesContent:["\n.order-selector {\n\twidth: max-content;\n\tmin-width: 260px; // align with NcSelect\n}\n"],sourceRoot:""}]);const l=i},12182:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}","",{version:3,sources:["webpack://./apps/theming/src/components/AppOrderSelectorElement.vue"],names:[],mappings:"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA",sourcesContent:["\n.order-selector-element {\n\t// hide default styling\n\tlist-style: none;\n\t// Align children\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\t// Spacing\n\tgap: 12px;\n\tpadding-inline: 12px;\n\n\t&:hover {\n\t\tbackground-color: var(--color-background-hover);\n\t\tborder-radius: var(--border-radius-large);\n\t}\n\n\t&--disabled {\n\t\tborder-color: var(--color-text-maxcontrast);\n\t\tcolor: var(--color-text-maxcontrast);\n\n\t\t.order-selector-element__icon {\n\t\t\topacity: 75%;\n\t\t}\n\t}\n\n\t&__actions {\n\t\tflex: 0 0;\n\t\tdisplay: flex;\n\t\tflex-direction: row;\n\t\tgap: 6px;\n\t}\n\n\t&__label {\n\t\tflex: 1 1;\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t}\n\n\t&__placeholder {\n\t\theight: 44px;\n\t\twidth: 44px;\n\t}\n\n\t&__icon {\n\t\tfilter: var(--background-invert-if-bright);\n\t}\n}\n"],sourceRoot:""}]);const l=i},49370:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".background-selector[data-v-1175e65a]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background-color[data-v-1175e65a]{display:flex;justify-content:center;align-items:center;width:176px;height:96px;margin:8px;border-radius:var(--border-radius-large);background-color:var(--color-primary)}.background-selector .background[data-v-1175e65a]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-1175e65a]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-1175e65a]{background-color:var(--color-primary-default);background-image:linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)),var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-1175e65a],.background-selector .background__default[data-v-1175e65a],.background-selector .background__color[data-v-1175e65a]{border-color:var(--color-border)}.background-selector .background__default[data-v-1175e65a],.background-selector .background__shipped[data-v-1175e65a]{color:#fff}.background-selector .background[data-color-bright][data-v-1175e65a]{color:#000}.background-selector .background--active[data-v-1175e65a],.background-selector .background[data-v-1175e65a]:hover,.background-selector .background[data-v-1175e65a]:focus{outline:2px solid var(--color-main-text) !important;border-color:var(--color-main-background) !important}.background-selector .background span[data-v-1175e65a]{margin:4px}.background-selector .background .check-icon[data-v-1175e65a]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-1175e65a]{display:block !important}","",{version:3,sources:["webpack://./apps/theming/src/components/BackgroundSettings.vue"],names:[],mappings:"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,wDACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,wCAAA,CACA,qCAAA,CAGD,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,wJAAA,CAGD,kLACC,gCAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAGC,mDAAA,CACA,oDAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA",sourcesContent:["\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background-color {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)), var(--image-background-plain, var(--image-background-default));\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t\tborder-color: var(--color-main-background) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t.check-icon {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) {\n\t\t\t.check-icon {\n\t\t\t\t// Show checkmark\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const l=i},16743:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".theming__preview[data-v-63951bb4]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-63951bb4],.theming__preview *[data-v-63951bb4]{user-select:none}.theming__preview-image[data-v-63951bb4]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-explanation[data-v-63951bb4]{margin-bottom:10px}.theming__preview-description[data-v-63951bb4]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-63951bb4]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-63951bb4]{padding:12px 0}.theming__preview--default[data-v-63951bb4]{grid-column:span 2}.theming__preview-warning[data-v-63951bb4]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-63951bb4]{flex-direction:column}.theming__preview-image[data-v-63951bb4]{margin:0}}","",{version:3,sources:["webpack://./apps/theming/src/components/ItemPreview.vue"],names:[],mappings:"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,kBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA",sourcesContent:["\n@use 'sass:math';\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-explanation {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: math.div(1024px, 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]);const l=i},22335:(t,e,n)=>{"use strict";n.d(e,{A:()=>l});var r=n(71354),o=n.n(r),a=n(76314),i=n.n(a)()(o());i.push([t.id,".user-app-menu-order[data-v-ee0f3d1a]{margin-block:12px}","",{version:3,sources:["webpack://./apps/theming/src/components/UserAppMenuSection.vue"],names:[],mappings:"AACA,sCACC,iBAAA",sourcesContent:["\n.user-app-menu-order {\n\tmargin-block: 12px;\n}\n"],sourceRoot:""}]);const l=i},80909:(t,e,n)=>{var r=n(30641),o=n(38329)(r);t.exports=o},16574:(t,e,n)=>{var r=n(80909);t.exports=function(t,e){var n=[];return r(t,(function(t,r,o){e(t,r,o)&&n.push(t)})),n}},30641:(t,e,n)=>{var r=n(86649),o=n(95950);t.exports=function(t,e){return t&&r(t,e,o)}},38329:(t,e,n)=>{var r=n(64894);t.exports=function(t,e){return function(n,o){if(null==n)return n;if(!r(n))return t(n,o);for(var a=n.length,i=e?a:-1,l=Object(n);(e?i--:++i<a)&&!1!==o(l[i],i,l););return n}}},84684:(t,e,n)=>{var r=n(69302),o=n(75288),a=n(36800),i=n(37241),l=Object.prototype,s=l.hasOwnProperty,c=r((function(t,e){t=Object(t);var n=-1,r=e.length,c=r>2?e[2]:void 0;for(c&&a(e[0],e[1],c)&&(r=1);++n<r;)for(var u=e[n],d=i(u),p=-1,h=d.length;++p<h;){var f=d[p],g=t[f];(void 0===g||o(g,l[f])&&!s.call(t,f))&&(t[f]=u[f])}return t}));t.exports=c},87612:(t,e,n)=>{var r=n(79770),o=n(16574),a=n(15389),i=n(56449);t.exports=function(t,e){return(i(t)?r:o)(t,a(e,3))}},64866:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}},o=r(n(3772)),a=r(n(5820));o.default.DefaultOpts.ImageClass=a.default,t.exports=o.default},38445:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=r(n(3772)),a=n(32629),i=function(){function t(t,e){void 0===e&&(e={}),this._src=t,this._opts=e,this._opts.filters=a(o.default.DefaultOpts.filters)}return t.prototype.maxColorCount=function(t){return this._opts.colorCount=t,this},t.prototype.maxDimension=function(t){return this._opts.maxDimension=t,this},t.prototype.addFilter=function(t){return this._opts.filters.push(t),this},t.prototype.removeFilter=function(t){var e=this._opts.filters.indexOf(t);return e>0&&this._opts.filters.splice(e),this},t.prototype.clearFilters=function(){return this._opts.filters=[],this},t.prototype.quality=function(t){return this._opts.quality=t,this},t.prototype.useImageClass=function(t){return this._opts.ImageClass=t,this},t.prototype.useGenerator=function(t){return this._opts.generator=t,this},t.prototype.useQuantizer=function(t){return this._opts.quantizer=t,this},t.prototype.build=function(){return new o.default(this._src,this._opts)},t.prototype.getPalette=function(t){return this.build().getPalette(t)},t.prototype.getSwatches=function(t){return this.build().getPalette(t)},t}();e.default=i},93525:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Swatch=void 0;var r=n(17388),o=n(87612),a=function(){function t(t,e){this._rgb=t,this._population=e}return t.applyFilter=function(t,e){return"function"==typeof e?o(t,(function(t){var n=t.r,r=t.g,o=t.b;return e(n,r,o,255)})):t},Object.defineProperty(t.prototype,"r",{get:function(){return this._rgb[0]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"g",{get:function(){return this._rgb[1]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"b",{get:function(){return this._rgb[2]},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"rgb",{get:function(){return this._rgb},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hsl",{get:function(){if(!this._hsl){var t=this._rgb,e=t[0],n=t[1],o=t[2];this._hsl=r.rgbToHsl(e,n,o)}return this._hsl},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"hex",{get:function(){if(!this._hex){var t=this._rgb,e=t[0],n=t[1],o=t[2];this._hex=r.rgbToHex(e,n,o)}return this._hex},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"population",{get:function(){return this._population},enumerable:!1,configurable:!0}),t.prototype.toJSON=function(){return{rgb:this.rgb,population:this.population}},t.prototype.getRgb=function(){return this._rgb},t.prototype.getHsl=function(){return this.hsl},t.prototype.getPopulation=function(){return this._population},t.prototype.getHex=function(){return this.hex},t.prototype.getYiq=function(){if(!this._yiq){var t=this._rgb;this._yiq=(299*t[0]+587*t[1]+114*t[2])/1e3}return this._yiq},Object.defineProperty(t.prototype,"titleTextColor",{get:function(){return this._titleTextColor||(this._titleTextColor=this.getYiq()<200?"#fff":"#000"),this._titleTextColor},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"bodyTextColor",{get:function(){return this._bodyTextColor||(this._bodyTextColor=this.getYiq()<150?"#fff":"#000"),this._bodyTextColor},enumerable:!1,configurable:!0}),t.prototype.getTitleTextColor=function(){return this.titleTextColor},t.prototype.getBodyTextColor=function(){return this.bodyTextColor},t}();e.Swatch=a},54824:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t,e,n,r){return r>=125&&!(t>250&&e>250&&n>250)}},53565:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.combineFilters=void 0;var r=n(54824);Object.defineProperty(e,"Default",{enumerable:!0,get:function(){return r.default}}),e.combineFilters=function(t){return Array.isArray(t)&&0!==t.length?function(e,n,r,o){if(0===o)return!1;for(var a=0;a<t.length;a++)if(!t[a](e,n,r,o))return!1;return!0}:null}},71593:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(93525),o=n(17388),a=n(84684),i={targetDarkLuma:.26,maxDarkLuma:.45,minLightLuma:.55,targetLightLuma:.74,minNormalLuma:.3,targetNormalLuma:.5,maxNormalLuma:.7,targetMutesSaturation:.3,maxMutesSaturation:.4,targetVibrantSaturation:1,minVibrantSaturation:.35,weightSaturation:3,weightLuma:6.5,weightPopulation:.5};function l(t,e,n,r,o,a,i,l,s,c){var u=null,d=0;return e.forEach((function(e){var p=e.getHsl(),h=p[1],f=p[2];if(h>=l&&h<=s&&f>=o&&f<=a&&!function(t,e){return t.Vibrant===e||t.DarkVibrant===e||t.LightVibrant===e||t.Muted===e||t.DarkMuted===e||t.LightMuted===e}(t,e)){var g=function(t,e,n,r,o,a,i){function l(t,e){return 1-Math.abs(t-e)}return function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];for(var n=0,r=0,o=0;o<t.length;o+=2){var a=t[o],i=t[o+1];n+=a*i,r+=i}return n/r}(l(t,e),i.weightSaturation,l(n,r),i.weightLuma,o/a,i.weightPopulation)}(h,i,f,r,e.getPopulation(),n,c);(null===u||g>d)&&(u=e,d=g)}})),u}e.default=function(t,e){e=a({},e,i);var n=function(t){var e=0;return t.forEach((function(t){e=Math.max(e,t.getPopulation())})),e}(t),s=function(t,e,n){var r={};return r.Vibrant=l(r,t,e,n.targetNormalLuma,n.minNormalLuma,n.maxNormalLuma,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.LightVibrant=l(r,t,e,n.targetLightLuma,n.minLightLuma,1,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.DarkVibrant=l(r,t,e,n.targetDarkLuma,0,n.maxDarkLuma,n.targetVibrantSaturation,n.minVibrantSaturation,1,n),r.Muted=l(r,t,e,n.targetNormalLuma,n.minNormalLuma,n.maxNormalLuma,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r.LightMuted=l(r,t,e,n.targetLightLuma,n.minLightLuma,1,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r.DarkMuted=l(r,t,e,n.targetDarkLuma,0,n.maxDarkLuma,n.targetMutesSaturation,0,n.maxMutesSaturation,n),r}(t,n,e);return function(t,e,n){if(null===t.Vibrant&&null===t.DarkVibrant&&null===t.LightVibrant){if(null===t.DarkVibrant&&null!==t.DarkMuted){var a=t.DarkMuted.getHsl(),i=a[0],l=a[1],s=a[2];s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightVibrant&&null!==t.LightMuted){var c=t.LightMuted.getHsl();i=c[0],l=c[1],s=c[2],s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}}if(null===t.Vibrant&&null!==t.DarkVibrant){var u=t.DarkVibrant.getHsl();i=u[0],l=u[1],s=u[2],s=n.targetNormalLuma,t.Vibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}else if(null===t.Vibrant&&null!==t.LightVibrant){var d=t.LightVibrant.getHsl();i=d[0],l=d[1],s=d[2],s=n.targetNormalLuma,t.Vibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.DarkVibrant&&null!==t.Vibrant){var p=t.Vibrant.getHsl();i=p[0],l=p[1],s=p[2],s=n.targetDarkLuma,t.DarkVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightVibrant&&null!==t.Vibrant){var h=t.Vibrant.getHsl();i=h[0],l=h[1],s=h[2],s=n.targetLightLuma,t.LightVibrant=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.Muted&&null!==t.Vibrant){var f=t.Vibrant.getHsl();i=f[0],l=f[1],s=f[2],s=n.targetMutesSaturation,t.Muted=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.DarkMuted&&null!==t.DarkVibrant){var g=t.DarkVibrant.getHsl();i=g[0],l=g[1],s=g[2],s=n.targetMutesSaturation,t.DarkMuted=new r.Swatch(o.hslToRgb(i,l,s),0)}if(null===t.LightMuted&&null!==t.LightVibrant){var m=t.LightVibrant.getHsl();i=m[0],l=m[1],s=m[2],s=n.targetMutesSaturation,t.LightMuted=new r.Swatch(o.hslToRgb(i,l,s),0)}}(s,0,e),s}},3528:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(71593);Object.defineProperty(e,"Default",{enumerable:!0,get:function(){return r.default}})},59327:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ImageBase=void 0;var n=function(){function t(){}return t.prototype.scaleDown=function(t){var e=this.getWidth(),n=this.getHeight(),r=1;if(t.maxDimension>0){var o=Math.max(e,n);o>t.maxDimension&&(r=t.maxDimension/o)}else r=1/t.quality;r<1&&this.resize(e*r,n*r,r)},t.prototype.applyFilter=function(t){var e=this.getImageData();if("function"==typeof t)for(var n=e.data,r=n.length/4,o=void 0,a=0;a<r;a++)t(n[0+(o=4*a)],n[o+1],n[o+2],n[o+3])||(n[o+3]=0);return Promise.resolve(e)},t}();e.ImageBase=n},5820:function(t,e,n){"use strict";var r,o=this&&this.__extends||(r=function(t,e){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var n in e)e.hasOwnProperty(n)&&(t[n]=e[n])},r(t,e)},function(t,e){function n(){this.constructor=t}r(t,e),t.prototype=null===e?Object.create(e):(n.prototype=e.prototype,new n)}),a=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),i=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),l=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.hasOwnProperty.call(t,n)&&a(e,t,n);return i(e,t),e};Object.defineProperty(e,"__esModule",{value:!0});var s=n(59327),c=l(n(88835)),u=function(t){function e(){return null!==t&&t.apply(this,arguments)||this}return o(e,t),e.prototype._initCanvas=function(){var t=this.image,e=this._canvas=document.createElement("canvas"),n=this._context=e.getContext("2d");e.className="vibrant-canvas",e.style.display="none",this._width=e.width=t.width,this._height=e.height=t.height,n.drawImage(t,0,0),document.body.appendChild(e)},e.prototype.load=function(t){var e,n,r,o,a,i,l=this,s=null,u=null;if("string"==typeof t)s=document.createElement("img"),a=t,null===(i=c.parse(a)).protocol&&null===i.host&&null===i.port||(e=window.location.href,n=t,r=c.parse(e),o=c.parse(n),r.protocol===o.protocol&&r.hostname===o.hostname&&r.port===o.port)||(s.crossOrigin="anonymous"),u=s.src=t;else{if(!(t instanceof HTMLImageElement))return Promise.reject(new Error("Cannot load buffer as an image in browser"));s=t,u=t.src}return this.image=s,new Promise((function(t,e){var n=function(){l._initCanvas(),t(l)};s.complete?n():(s.onload=n,s.onerror=function(t){return e(new Error("Fail to load image: "+u))})}))},e.prototype.clear=function(){this._context.clearRect(0,0,this._width,this._height)},e.prototype.update=function(t){this._context.putImageData(t,0,0)},e.prototype.getWidth=function(){return this._width},e.prototype.getHeight=function(){return this._height},e.prototype.resize=function(t,e,n){var r=this,o=r._canvas,a=r._context,i=r.image;this._width=o.width=t,this._height=o.height=e,a.scale(n,n),a.drawImage(i,0,0)},e.prototype.getPixelCount=function(){return this._width*this._height},e.prototype.getImageData=function(){return this._context.getImageData(0,0,this._width,this._height)},e.prototype.remove=function(){this._canvas&&this._canvas.parentNode&&this._canvas.parentNode.removeChild(this._canvas)},e}(s.ImageBase);e.default=u},5182:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WebWorker=void 0;var r=n(89950);Object.defineProperty(e,"MMCQ",{enumerable:!0,get:function(){return r.default}}),e.WebWorker=null},89950:function(t,e,n){"use strict";var r=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var o=n(93525),a=r(n(72747)),i=r(n(46839));function l(t,e){for(var n=t.size();t.size()<e;){var r=t.pop();if(!(r&&r.count()>0))break;var o=r.split(),a=o[0],i=o[1];if(t.push(a),i&&i.count()>0&&t.push(i),t.size()===n)break;n=t.size()}}e.default=function(t,e){if(0===t.length||e.colorCount<2||e.colorCount>256)throw new Error("Wrong MMCQ parameters");var n=a.default.build(t),r=n.hist,s=(Object.keys(r).length,new i.default((function(t,e){return t.count()-e.count()})));s.push(n),l(s,.75*e.colorCount);var c=new i.default((function(t,e){return t.count()*t.volume()-e.count()*e.volume()}));return c.contents=s.contents,l(c,e.colorCount-c.size()),function(t){for(var e=[];t.size();){var n=t.pop(),r=n.avg();r[0],r[1],r[2],e.push(new o.Swatch(r,n.count()))}return e}(c)}},46839:(t,e)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t){this._comparator=t,this.contents=[],this._sorted=!1}return t.prototype._sort=function(){this._sorted||(this.contents.sort(this._comparator),this._sorted=!0)},t.prototype.push=function(t){this.contents.push(t),this._sorted=!1},t.prototype.peek=function(t){return this._sort(),t="number"==typeof t?t:this.contents.length-1,this.contents[t]},t.prototype.pop=function(){return this._sort(),this.contents.pop()},t.prototype.size=function(){return this.contents.length},t.prototype.map=function(t){return this._sort(),this.contents.map(t)},t}();e.default=n},72747:(t,e,n)=>{"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(17388),o=function(){function t(t,e,n,r,o,a,i){this._volume=-1,this._count=-1,this.dimension={r1:t,r2:e,g1:n,g2:r,b1:o,b2:a},this.hist=i}return t.build=function(e,n){var o,a,i,l,s,c,u,d,p,h=1<<3*r.SIGBITS,f=new Uint32Array(h);o=i=s=0,a=l=c=Number.MAX_VALUE;for(var g=e.length/4,m=0;m<g;){var v=4*m;m++,u=e[v+0],d=e[v+1],p=e[v+2],0!==e[v+3]&&(u>>=r.RSHIFT,d>>=r.RSHIFT,p>>=r.RSHIFT,f[r.getColorIndex(u,d,p)]+=1,u>o&&(o=u),u<a&&(a=u),d>i&&(i=d),d<l&&(l=d),p>s&&(s=p),p<c&&(c=p))}return new t(a,o,l,i,c,s,f)},t.prototype.invalidate=function(){this._volume=this._count=-1,this._avg=null},t.prototype.volume=function(){if(this._volume<0){var t=this.dimension,e=t.r1,n=t.r2,r=t.g1,o=t.g2,a=t.b1,i=t.b2;this._volume=(n-e+1)*(o-r+1)*(i-a+1)}return this._volume},t.prototype.count=function(){if(this._count<0){for(var t=this.hist,e=this.dimension,n=e.r1,o=e.r2,a=e.g1,i=e.g2,l=e.b1,s=e.b2,c=0,u=n;u<=o;u++)for(var d=a;d<=i;d++)for(var p=l;p<=s;p++)c+=t[r.getColorIndex(u,d,p)];this._count=c}return this._count},t.prototype.clone=function(){var e=this.hist,n=this.dimension;return new t(n.r1,n.r2,n.g1,n.g2,n.b1,n.b2,e)},t.prototype.avg=function(){if(!this._avg){var t=this.hist,e=this.dimension,n=e.r1,o=e.r2,a=e.g1,i=e.g2,l=e.b1,s=e.b2,c=0,u=1<<8-r.SIGBITS,d=void 0,p=void 0,h=void 0;d=p=h=0;for(var f=n;f<=o;f++)for(var g=a;g<=i;g++)for(var m=l;m<=s;m++){var v=t[r.getColorIndex(f,g,m)];c+=v,d+=v*(f+.5)*u,p+=v*(g+.5)*u,h+=v*(m+.5)*u}this._avg=c?[~~(d/c),~~(p/c),~~(h/c)]:[~~(u*(n+o+1)/2),~~(u*(a+i+1)/2),~~(u*(l+s+1)/2)]}return this._avg},t.prototype.contains=function(t){var e=t[0],n=t[1],o=t[2],a=this.dimension,i=a.r1,l=a.r2,s=a.g1,c=a.g2,u=a.b1,d=a.b2;return e>>=r.RSHIFT,n>>=r.RSHIFT,o>>=r.RSHIFT,e>=i&&e<=l&&n>=s&&n<=c&&o>=u&&o<=d},t.prototype.split=function(){var t=this.hist,e=this.dimension,n=e.r1,o=e.r2,a=e.g1,i=e.g2,l=e.b1,s=e.b2,c=this.count();if(!c)return[];if(1===c)return[this.clone()];var u,d,p=o-n+1,h=i-a+1,f=s-l+1,g=Math.max(p,h,f),m=null;u=d=0;var v=null;if(g===p){v="r",m=new Uint32Array(o+1);for(var b=n;b<=o;b++){u=0;for(var y=a;y<=i;y++)for(var A=l;A<=s;A++)u+=t[r.getColorIndex(b,y,A)];d+=u,m[b]=d}}else if(g===h)for(v="g",m=new Uint32Array(i+1),y=a;y<=i;y++){for(u=0,b=n;b<=o;b++)for(A=l;A<=s;A++)u+=t[r.getColorIndex(b,y,A)];d+=u,m[y]=d}else for(v="b",m=new Uint32Array(s+1),A=l;A<=s;A++){for(u=0,b=n;b<=o;b++)for(y=a;y<=i;y++)u+=t[r.getColorIndex(b,y,A)];d+=u,m[A]=d}for(var w=-1,_=new Uint32Array(m.length),C=0;C<m.length;C++){var k=m[C];w<0&&k>d/2&&(w=C),_[C]=d-k}var x=this;return function(t){var e=t+"1",n=t+"2",r=x.dimension[e],o=x.dimension[n],a=x.clone(),i=x.clone(),l=w-r,s=o-w;for(l<=s?(o=Math.min(o-1,~~(w+s/2)),o=Math.max(0,o)):(o=Math.max(r,~~(w-1-l/2)),o=Math.min(x.dimension[n],o));!m[o];)o++;for(var c=_[o];!c&&m[o-1];)c=_[--o];return a.dimension[n]=o,i.dimension[e]=o+1,[a,i]}(v)},t}();e.default=o},17388:(t,e)=>{"use strict";function n(t){var e=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(t);return null===e?null:[e[1],e[2],e[3]].map((function(t){return parseInt(t,16)}))}function r(t,e,n){return e/=255,n/=255,t=(t/=255)>.04045?Math.pow((t+.005)/1.055,2.4):t/12.92,e=e>.04045?Math.pow((e+.005)/1.055,2.4):e/12.92,n=n>.04045?Math.pow((n+.005)/1.055,2.4):n/12.92,[.4124*(t*=100)+.3576*(e*=100)+.1805*(n*=100),.2126*t+.7152*e+.0722*n,.0193*t+.1192*e+.9505*n]}function o(t,e,n){return e/=100,n/=108.883,t=(t/=95.047)>.008856?Math.pow(t,1/3):7.787*t+16/116,[116*(e=e>.008856?Math.pow(e,1/3):7.787*e+16/116)-16,500*(t-e),200*(e-(n=n>.008856?Math.pow(n,1/3):7.787*n+16/116))]}function a(t,e,n){var a=r(t,e,n);return o(a[0],a[1],a[2])}function i(t,e){var n=t[0],r=t[1],o=t[2],a=e[0],i=e[1],l=e[2],s=n-a,c=r-i,u=o-l,d=Math.sqrt(r*r+o*o),p=a-n,h=Math.sqrt(i*i+l*l)-d,f=Math.sqrt(s*s+c*c+u*u),g=Math.sqrt(f)>Math.sqrt(Math.abs(p))+Math.sqrt(Math.abs(h))?Math.sqrt(f*f-p*p-h*h):0;return p/=1,h/=1*(1+.045*d),g/=1*(1+.015*d),Math.sqrt(p*p+h*h+g*g)}function l(t,e){return i(a.apply(void 0,t),a.apply(void 0,e))}Object.defineProperty(e,"__esModule",{value:!0}),e.getColorIndex=e.getColorDiffStatus=e.hexDiff=e.rgbDiff=e.deltaE94=e.rgbToCIELab=e.xyzToCIELab=e.rgbToXyz=e.hslToRgb=e.rgbToHsl=e.rgbToHex=e.hexToRgb=e.defer=e.RSHIFT=e.SIGBITS=e.DELTAE94_DIFF_STATUS=void 0,e.DELTAE94_DIFF_STATUS={NA:0,PERFECT:1,CLOSE:2,GOOD:10,SIMILAR:50},e.SIGBITS=5,e.RSHIFT=8-e.SIGBITS,e.defer=function(){var t,e,n=new Promise((function(n,r){t=n,e=r}));return{resolve:t,reject:e,promise:n}},e.hexToRgb=n,e.rgbToHex=function(t,e,n){return"#"+((1<<24)+(t<<16)+(e<<8)+n).toString(16).slice(1,7)},e.rgbToHsl=function(t,e,n){t/=255,e/=255,n/=255;var r,o,a=Math.max(t,e,n),i=Math.min(t,e,n),l=(a+i)/2;if(a===i)r=o=0;else{var s=a-i;switch(o=l>.5?s/(2-a-i):s/(a+i),a){case t:r=(e-n)/s+(e<n?6:0);break;case e:r=(n-t)/s+2;break;case n:r=(t-e)/s+4}r/=6}return[r,o,l]},e.hslToRgb=function(t,e,n){var r,o,a;function i(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+(e-t)*(2/3-n)*6:t}if(0===e)r=o=a=n;else{var l=n<.5?n*(1+e):n+e-n*e,s=2*n-l;r=i(s,l,t+1/3),o=i(s,l,t),a=i(s,l,t-1/3)}return[255*r,255*o,255*a]},e.rgbToXyz=r,e.xyzToCIELab=o,e.rgbToCIELab=a,e.deltaE94=i,e.rgbDiff=l,e.hexDiff=function(t,e){return l(n(t),n(e))},e.getColorDiffStatus=function(t){return t<e.DELTAE94_DIFF_STATUS.NA?"N/A":t<=e.DELTAE94_DIFF_STATUS.PERFECT?"Perfect":t<=e.DELTAE94_DIFF_STATUS.CLOSE?"Close":t<=e.DELTAE94_DIFF_STATUS.GOOD?"Good":t<e.DELTAE94_DIFF_STATUS.SIMILAR?"Similar":"Wrong"},e.getColorIndex=function(t,n,r){return(t<<2*e.SIGBITS)+(n<<e.SIGBITS)+r}},3772:function(t,e,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(t,e,n,r){void 0===r&&(r=n),Object.defineProperty(t,r,{enumerable:!0,get:function(){return e[n]}})}:function(t,e,n,r){void 0===r&&(r=n),t[r]=e[n]}),o=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),a=this&&this.__importStar||function(t){if(t&&t.__esModule)return t;var e={};if(null!=t)for(var n in t)"default"!==n&&Object.hasOwnProperty.call(t,n)&&r(e,t,n);return o(e,t),e},i=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(e,"__esModule",{value:!0});var l=n(93525),s=i(n(38445)),c=a(n(17388)),u=a(n(5182)),d=a(n(3528)),p=a(n(53565)),h=n(84684),f=function(){function t(e,n){this._src=e,this.opts=h({},n,t.DefaultOpts),this.opts.combinedFilter=p.combineFilters(this.opts.filters)}return t.from=function(t){return new s.default(t)},t.prototype._process=function(t,e){var n=e.quantizer,r=e.generator;return t.scaleDown(e),t.applyFilter(e.combinedFilter).then((function(t){return n(t.data,e)})).then((function(t){return l.Swatch.applyFilter(t,e.combinedFilter)})).then((function(t){return Promise.resolve(r(t))}))},t.prototype.palette=function(){return this.swatches()},t.prototype.swatches=function(){return this._palette},t.prototype.getPalette=function(t){var e=this,n=new this.opts.ImageClass,r=n.load(this._src).then((function(t){return e._process(t,e.opts)})).then((function(t){return e._palette=t,n.remove(),t}),(function(t){throw n.remove(),t}));return t&&r.then((function(e){return t(null,e)}),(function(e){return t(e)})),r},t.Builder=s.default,t.Quantizer=u,t.Generator=d,t.Filter=p,t.Util=c,t.Swatch=l.Swatch,t.DefaultOpts={colorCount:64,quality:5,generator:d.Default,ImageClass:null,quantizer:u.MMCQ,filters:[p.Default]},t}();e.default=f},58859:(t,e,n)=>{var r="function"==typeof Map&&Map.prototype,o=Object.getOwnPropertyDescriptor&&r?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,a=r&&o&&"function"==typeof o.get?o.get:null,i=r&&Map.prototype.forEach,l="function"==typeof Set&&Set.prototype,s=Object.getOwnPropertyDescriptor&&l?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,c=l&&s&&"function"==typeof s.get?s.get:null,u=l&&Set.prototype.forEach,d="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,p="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,h="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,f=Boolean.prototype.valueOf,g=Object.prototype.toString,m=Function.prototype.toString,v=String.prototype.match,b=String.prototype.slice,y=String.prototype.replace,A=String.prototype.toUpperCase,w=String.prototype.toLowerCase,_=RegExp.prototype.test,C=Array.prototype.concat,k=Array.prototype.join,x=Array.prototype.slice,S=Math.floor,D="function"==typeof BigInt?BigInt.prototype.valueOf:null,E=Object.getOwnPropertySymbols,T="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,O="function"==typeof Symbol&&"object"==typeof Symbol.iterator,I="function"==typeof Symbol&&Symbol.toStringTag&&(Symbol.toStringTag,1)?Symbol.toStringTag:null,j=Object.prototype.propertyIsEnumerable,M=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function P(t,e){if(t===1/0||t===-1/0||t!=t||t&&t>-1e3&&t<1e3||_.call(/e/,e))return e;var n=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if("number"==typeof t){var r=t<0?-S(-t):S(t);if(r!==t){var o=String(r),a=b.call(e,o.length+1);return y.call(o,n,"$&_")+"."+y.call(y.call(a,/([0-9]{3})/g,"$&_"),/_$/,"")}}return y.call(e,n,"$&_")}var L=n(42634),N=L.custom,B=U(N)?N:null;function F(t,e,n){var r="double"===(n.quoteStyle||e)?'"':"'";return r+t+r}function R(t){return y.call(String(t),/"/g,""")}function q(t){return!("[object Array]"!==W(t)||I&&"object"==typeof t&&I in t)}function H(t){return!("[object RegExp]"!==W(t)||I&&"object"==typeof t&&I in t)}function U(t){if(O)return t&&"object"==typeof t&&t instanceof Symbol;if("symbol"==typeof t)return!0;if(!t||"object"!=typeof t||!T)return!1;try{return T.call(t),!0}catch(t){}return!1}t.exports=function t(e,r,o,l){var s=r||{};if(z(s,"quoteStyle")&&"single"!==s.quoteStyle&&"double"!==s.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(z(s,"maxStringLength")&&("number"==typeof s.maxStringLength?s.maxStringLength<0&&s.maxStringLength!==1/0:null!==s.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var g=!z(s,"customInspect")||s.customInspect;if("boolean"!=typeof g&&"symbol"!==g)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(z(s,"indent")&&null!==s.indent&&"\t"!==s.indent&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(z(s,"numericSeparator")&&"boolean"!=typeof s.numericSeparator)throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var A=s.numericSeparator;if(void 0===e)return"undefined";if(null===e)return"null";if("boolean"==typeof e)return e?"true":"false";if("string"==typeof e)return G(e,s);if("number"==typeof e){if(0===e)return 1/0/e>0?"0":"-0";var _=String(e);return A?P(e,_):_}if("bigint"==typeof e){var S=String(e)+"n";return A?P(e,S):S}var E=void 0===s.depth?5:s.depth;if(void 0===o&&(o=0),o>=E&&E>0&&"object"==typeof e)return q(e)?"[Array]":"[Object]";var N,V=function(t,e){var n;if("\t"===t.indent)n="\t";else{if(!("number"==typeof t.indent&&t.indent>0))return null;n=k.call(Array(t.indent+1)," ")}return{base:n,prev:k.call(Array(e+1),n)}}(s,o);if(void 0===l)l=[];else if(Y(l,e)>=0)return"[Circular]";function K(e,n,r){if(n&&(l=x.call(l)).push(n),r){var a={depth:s.depth};return z(s,"quoteStyle")&&(a.quoteStyle=s.quoteStyle),t(e,a,o+1,l)}return t(e,s,o+1,l)}if("function"==typeof e&&!H(e)){var tt=function(t){if(t.name)return t.name;var e=v.call(m.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}(e),et=Z(e,K);return"[Function"+(tt?": "+tt:" (anonymous)")+"]"+(et.length>0?" { "+k.call(et,", ")+" }":"")}if(U(e)){var nt=O?y.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):T.call(e);return"object"!=typeof e||O?nt:X(nt)}if((N=e)&&"object"==typeof N&&("undefined"!=typeof HTMLElement&&N instanceof HTMLElement||"string"==typeof N.nodeName&&"function"==typeof N.getAttribute)){for(var rt="<"+w.call(String(e.nodeName)),ot=e.attributes||[],at=0;at<ot.length;at++)rt+=" "+ot[at].name+"="+F(R(ot[at].value),"double",s);return rt+=">",e.childNodes&&e.childNodes.length&&(rt+="..."),rt+"</"+w.call(String(e.nodeName))+">"}if(q(e)){if(0===e.length)return"[]";var it=Z(e,K);return V&&!function(t){for(var e=0;e<t.length;e++)if(Y(t[e],"\n")>=0)return!1;return!0}(it)?"["+J(it,V)+"]":"[ "+k.call(it,", ")+" ]"}if(function(t){return!("[object Error]"!==W(t)||I&&"object"==typeof t&&I in t)}(e)){var lt=Z(e,K);return"cause"in Error.prototype||!("cause"in e)||j.call(e,"cause")?0===lt.length?"["+String(e)+"]":"{ ["+String(e)+"] "+k.call(lt,", ")+" }":"{ ["+String(e)+"] "+k.call(C.call("[cause]: "+K(e.cause),lt),", ")+" }"}if("object"==typeof e&&g){if(B&&"function"==typeof e[B]&&L)return L(e,{depth:E-o});if("symbol"!==g&&"function"==typeof e.inspect)return e.inspect()}if(function(t){if(!a||!t||"object"!=typeof t)return!1;try{a.call(t);try{c.call(t)}catch(t){return!0}return t instanceof Map}catch(t){}return!1}(e)){var st=[];return i&&i.call(e,(function(t,n){st.push(K(n,e,!0)+" => "+K(t,e))})),Q("Map",a.call(e),st,V)}if(function(t){if(!c||!t||"object"!=typeof t)return!1;try{c.call(t);try{a.call(t)}catch(t){return!0}return t instanceof Set}catch(t){}return!1}(e)){var ct=[];return u&&u.call(e,(function(t){ct.push(K(t,e))})),Q("Set",c.call(e),ct,V)}if(function(t){if(!d||!t||"object"!=typeof t)return!1;try{d.call(t,d);try{p.call(t,p)}catch(t){return!0}return t instanceof WeakMap}catch(t){}return!1}(e))return $("WeakMap");if(function(t){if(!p||!t||"object"!=typeof t)return!1;try{p.call(t,p);try{d.call(t,d)}catch(t){return!0}return t instanceof WeakSet}catch(t){}return!1}(e))return $("WeakSet");if(function(t){if(!h||!t||"object"!=typeof t)return!1;try{return h.call(t),!0}catch(t){}return!1}(e))return $("WeakRef");if(function(t){return!("[object Number]"!==W(t)||I&&"object"==typeof t&&I in t)}(e))return X(K(Number(e)));if(function(t){if(!t||"object"!=typeof t||!D)return!1;try{return D.call(t),!0}catch(t){}return!1}(e))return X(K(D.call(e)));if(function(t){return!("[object Boolean]"!==W(t)||I&&"object"==typeof t&&I in t)}(e))return X(f.call(e));if(function(t){return!("[object String]"!==W(t)||I&&"object"==typeof t&&I in t)}(e))return X(K(String(e)));if("undefined"!=typeof window&&e===window)return"{ [object Window] }";if(e===n.g)return"{ [object globalThis] }";if(!function(t){return!("[object Date]"!==W(t)||I&&"object"==typeof t&&I in t)}(e)&&!H(e)){var ut=Z(e,K),dt=M?M(e)===Object.prototype:e instanceof Object||e.constructor===Object,pt=e instanceof Object?"":"null prototype",ht=!dt&&I&&Object(e)===e&&I in e?b.call(W(e),8,-1):pt?"Object":"",ft=(dt||"function"!=typeof e.constructor?"":e.constructor.name?e.constructor.name+" ":"")+(ht||pt?"["+k.call(C.call([],ht||[],pt||[]),": ")+"] ":"");return 0===ut.length?ft+"{}":V?ft+"{"+J(ut,V)+"}":ft+"{ "+k.call(ut,", ")+" }"}return String(e)};var V=Object.prototype.hasOwnProperty||function(t){return t in this};function z(t,e){return V.call(t,e)}function W(t){return g.call(t)}function Y(t,e){if(t.indexOf)return t.indexOf(e);for(var n=0,r=t.length;n<r;n++)if(t[n]===e)return n;return-1}function G(t,e){if(t.length>e.maxStringLength){var n=t.length-e.maxStringLength,r="... "+n+" more character"+(n>1?"s":"");return G(b.call(t,0,e.maxStringLength),e)+r}return F(y.call(y.call(t,/(['\\])/g,"\\$1"),/[\x00-\x1f]/g,K),"single",e)}function K(t){var e=t.charCodeAt(0),n={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return n?"\\"+n:"\\x"+(e<16?"0":"")+A.call(e.toString(16))}function X(t){return"Object("+t+")"}function $(t){return t+" { ? }"}function Q(t,e,n,r){return t+" ("+e+") {"+(r?J(n,r):k.call(n,", "))+"}"}function J(t,e){if(0===t.length)return"";var n="\n"+e.prev+e.base;return n+k.call(t,","+n)+"\n"+e.prev}function Z(t,e){var n=q(t),r=[];if(n){r.length=t.length;for(var o=0;o<t.length;o++)r[o]=z(t,o)?e(t[o],t):""}var a,i="function"==typeof E?E(t):[];if(O){a={};for(var l=0;l<i.length;l++)a["$"+i[l]]=i[l]}for(var s in t)z(t,s)&&(n&&String(Number(s))===s&&s<t.length||O&&a["$"+s]instanceof Symbol||(_.call(/[^\w$]/,s)?r.push(e(s,t)+": "+e(t[s],t)):r.push(s+": "+e(t[s],t))));if("function"==typeof E)for(var c=0;c<i.length;c++)j.call(t,i[c])&&r.push("["+e(i[c])+"]: "+e(t[i[c]],t));return r}},920:(t,e,n)=>{"use strict";var r=n(70453),o=n(38075),a=n(58859),i=n(69675),l=r("%WeakMap%",!0),s=r("%Map%",!0),c=o("WeakMap.prototype.get",!0),u=o("WeakMap.prototype.set",!0),d=o("WeakMap.prototype.has",!0),p=o("Map.prototype.get",!0),h=o("Map.prototype.set",!0),f=o("Map.prototype.has",!0),g=function(t,e){for(var n,r=t;null!==(n=r.next);r=n)if(n.key===e)return r.next=n.next,n.next=t.next,t.next=n,n};t.exports=function(){var t,e,n,r={assert:function(t){if(!r.has(t))throw new i("Side channel does not contain "+a(t))},get:function(r){if(l&&r&&("object"==typeof r||"function"==typeof r)){if(t)return c(t,r)}else if(s){if(e)return p(e,r)}else if(n)return function(t,e){var n=g(t,e);return n&&n.value}(n,r)},has:function(r){if(l&&r&&("object"==typeof r||"function"==typeof r)){if(t)return d(t,r)}else if(s){if(e)return f(e,r)}else if(n)return function(t,e){return!!g(t,e)}(n,r);return!1},set:function(r,o){l&&r&&("object"==typeof r||"function"==typeof r)?(t||(t=new l),u(t,r,o)):s?(e||(e=new s),h(e,r,o)):(n||(n={key:{},next:null}),function(t,e,n){var r=g(t,e);r?r.value=n:t.next={key:e,next:t.next,value:n}}(n,r,o))}};return r}},61270:function(t,e,n){var r;t=n.nmd(t),function(o){e&&e.nodeType,t&&t.nodeType;var a="object"==typeof n.g&&n.g;a.global!==a&&a.window!==a&&a.self;var i,l=2147483647,s=36,c=26,u=38,d=700,p=/^xn--/,h=/[^\x20-\x7E]/,f=/[\x2E\u3002\uFF0E\uFF61]/g,g={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},m=s-1,v=Math.floor,b=String.fromCharCode;function y(t){throw new RangeError(g[t])}function A(t,e){for(var n=t.length,r=[];n--;)r[n]=e(t[n]);return r}function w(t,e){var n=t.split("@"),r="";return n.length>1&&(r=n[0]+"@",t=n[1]),r+A((t=t.replace(f,".")).split("."),e).join(".")}function _(t){for(var e,n,r=[],o=0,a=t.length;o<a;)(e=t.charCodeAt(o++))>=55296&&e<=56319&&o<a?56320==(64512&(n=t.charCodeAt(o++)))?r.push(((1023&e)<<10)+(1023&n)+65536):(r.push(e),o--):r.push(e);return r}function C(t){return A(t,(function(t){var e="";return t>65535&&(e+=b((t-=65536)>>>10&1023|55296),t=56320|1023&t),e+b(t)})).join("")}function k(t,e){return t+22+75*(t<26)-((0!=e)<<5)}function x(t,e,n){var r=0;for(t=n?v(t/d):t>>1,t+=v(t/e);t>m*c>>1;r+=s)t=v(t/m);return v(r+(m+1)*t/(t+u))}function S(t){var e,n,r,o,a,i,u,d,p,h,f,g=[],m=t.length,b=0,A=128,w=72;for((n=t.lastIndexOf("-"))<0&&(n=0),r=0;r<n;++r)t.charCodeAt(r)>=128&&y("not-basic"),g.push(t.charCodeAt(r));for(o=n>0?n+1:0;o<m;){for(a=b,i=1,u=s;o>=m&&y("invalid-input"),((d=(f=t.charCodeAt(o++))-48<10?f-22:f-65<26?f-65:f-97<26?f-97:s)>=s||d>v((l-b)/i))&&y("overflow"),b+=d*i,!(d<(p=u<=w?1:u>=w+c?c:u-w));u+=s)i>v(l/(h=s-p))&&y("overflow"),i*=h;w=x(b-a,e=g.length+1,0==a),v(b/e)>l-A&&y("overflow"),A+=v(b/e),b%=e,g.splice(b++,0,A)}return C(g)}function D(t){var e,n,r,o,a,i,u,d,p,h,f,g,m,A,w,C=[];for(g=(t=_(t)).length,e=128,n=0,a=72,i=0;i<g;++i)(f=t[i])<128&&C.push(b(f));for(r=o=C.length,o&&C.push("-");r<g;){for(u=l,i=0;i<g;++i)(f=t[i])>=e&&f<u&&(u=f);for(u-e>v((l-n)/(m=r+1))&&y("overflow"),n+=(u-e)*m,e=u,i=0;i<g;++i)if((f=t[i])<e&&++n>l&&y("overflow"),f==e){for(d=n,p=s;!(d<(h=p<=a?1:p>=a+c?c:p-a));p+=s)w=d-h,A=s-h,C.push(b(k(h+w%A,0))),d=v(w/A);C.push(b(k(d,0))),a=x(n,m,r==o),n=0,++r}++n,++e}return C.join("")}i={version:"1.4.1",ucs2:{decode:_,encode:C},decode:S,encode:D,toASCII:function(t){return w(t,(function(t){return h.test(t)?"xn--"+D(t):t}))},toUnicode:function(t){return w(t,(function(t){return p.test(t)?S(t.slice(4).toLowerCase()):t}))}},void 0===(r=function(){return i}.call(e,n,e,t))||(t.exports=r)}()},95902:t=>{"use strict";var e=String.prototype.replace,n=/%20/g,r="RFC3986";t.exports={default:r,formatters:{RFC1738:function(t){return e.call(t,n,"+")},RFC3986:function(t){return String(t)}},RFC1738:"RFC1738",RFC3986:r}},63098:(t,e,n)=>{"use strict";var r=n(91207),o=n(60969),a=n(95902);t.exports={formats:a,parse:o,stringify:r}},60969:(t,e,n)=>{"use strict";var r=n(62795),o=Object.prototype.hasOwnProperty,a=Array.isArray,i={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!0,decoder:r.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},l=function(t){return t.replace(/&#(\d+);/g,(function(t,e){return String.fromCharCode(parseInt(e,10))}))},s=function(t,e){return t&&"string"==typeof t&&e.comma&&t.indexOf(",")>-1?t.split(","):t},c=function(t,e,n,r){if(t){var a=n.allowDots?t.replace(/\.([^.[]+)/g,"[$1]"):t,i=/(\[[^[\]]*])/g,l=n.depth>0&&/(\[[^[\]]*])/.exec(a),c=l?a.slice(0,l.index):a,u=[];if(c){if(!n.plainObjects&&o.call(Object.prototype,c)&&!n.allowPrototypes)return;u.push(c)}for(var d=0;n.depth>0&&null!==(l=i.exec(a))&&d<n.depth;){if(d+=1,!n.plainObjects&&o.call(Object.prototype,l[1].slice(1,-1))&&!n.allowPrototypes)return;u.push(l[1])}return l&&u.push("["+a.slice(l.index)+"]"),function(t,e,n,r){for(var o=r?e:s(e,n),a=t.length-1;a>=0;--a){var i,l=t[a];if("[]"===l&&n.parseArrays)i=n.allowEmptyArrays&&""===o?[]:[].concat(o);else{i=n.plainObjects?Object.create(null):{};var c="["===l.charAt(0)&&"]"===l.charAt(l.length-1)?l.slice(1,-1):l,u=n.decodeDotInKeys?c.replace(/%2E/g,"."):c,d=parseInt(u,10);n.parseArrays||""!==u?!isNaN(d)&&l!==u&&String(d)===u&&d>=0&&n.parseArrays&&d<=n.arrayLimit?(i=[])[d]=o:"__proto__"!==u&&(i[u]=o):i={0:o}}o=i}return o}(u,e,n,r)}};t.exports=function(t,e){var n=function(t){if(!t)return i;if(void 0!==t.allowEmptyArrays&&"boolean"!=typeof t.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(void 0!==t.decodeDotInKeys&&"boolean"!=typeof t.decodeDotInKeys)throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==t.decoder&&void 0!==t.decoder&&"function"!=typeof t.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==t.charset&&"utf-8"!==t.charset&&"iso-8859-1"!==t.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var e=void 0===t.charset?i.charset:t.charset,n=void 0===t.duplicates?i.duplicates:t.duplicates;if("combine"!==n&&"first"!==n&&"last"!==n)throw new TypeError("The duplicates option must be either combine, first, or last");return{allowDots:void 0===t.allowDots?!0===t.decodeDotInKeys||i.allowDots:!!t.allowDots,allowEmptyArrays:"boolean"==typeof t.allowEmptyArrays?!!t.allowEmptyArrays:i.allowEmptyArrays,allowPrototypes:"boolean"==typeof t.allowPrototypes?t.allowPrototypes:i.allowPrototypes,allowSparse:"boolean"==typeof t.allowSparse?t.allowSparse:i.allowSparse,arrayLimit:"number"==typeof t.arrayLimit?t.arrayLimit:i.arrayLimit,charset:e,charsetSentinel:"boolean"==typeof t.charsetSentinel?t.charsetSentinel:i.charsetSentinel,comma:"boolean"==typeof t.comma?t.comma:i.comma,decodeDotInKeys:"boolean"==typeof t.decodeDotInKeys?t.decodeDotInKeys:i.decodeDotInKeys,decoder:"function"==typeof t.decoder?t.decoder:i.decoder,delimiter:"string"==typeof t.delimiter||r.isRegExp(t.delimiter)?t.delimiter:i.delimiter,depth:"number"==typeof t.depth||!1===t.depth?+t.depth:i.depth,duplicates:n,ignoreQueryPrefix:!0===t.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof t.interpretNumericEntities?t.interpretNumericEntities:i.interpretNumericEntities,parameterLimit:"number"==typeof t.parameterLimit?t.parameterLimit:i.parameterLimit,parseArrays:!1!==t.parseArrays,plainObjects:"boolean"==typeof t.plainObjects?t.plainObjects:i.plainObjects,strictNullHandling:"boolean"==typeof t.strictNullHandling?t.strictNullHandling:i.strictNullHandling}}(e);if(""===t||null==t)return n.plainObjects?Object.create(null):{};for(var u="string"==typeof t?function(t,e){var n,c={__proto__:null},u=e.ignoreQueryPrefix?t.replace(/^\?/,""):t,d=e.parameterLimit===1/0?void 0:e.parameterLimit,p=u.split(e.delimiter,d),h=-1,f=e.charset;if(e.charsetSentinel)for(n=0;n<p.length;++n)0===p[n].indexOf("utf8=")&&("utf8=%E2%9C%93"===p[n]?f="utf-8":"utf8=%26%2310003%3B"===p[n]&&(f="iso-8859-1"),h=n,n=p.length);for(n=0;n<p.length;++n)if(n!==h){var g,m,v=p[n],b=v.indexOf("]="),y=-1===b?v.indexOf("="):b+1;-1===y?(g=e.decoder(v,i.decoder,f,"key"),m=e.strictNullHandling?null:""):(g=e.decoder(v.slice(0,y),i.decoder,f,"key"),m=r.maybeMap(s(v.slice(y+1),e),(function(t){return e.decoder(t,i.decoder,f,"value")}))),m&&e.interpretNumericEntities&&"iso-8859-1"===f&&(m=l(m)),v.indexOf("[]=")>-1&&(m=a(m)?[m]:m);var A=o.call(c,g);A&&"combine"===e.duplicates?c[g]=r.combine(c[g],m):A&&"last"!==e.duplicates||(c[g]=m)}return c}(t,n):t,d=n.plainObjects?Object.create(null):{},p=Object.keys(u),h=0;h<p.length;++h){var f=p[h],g=c(f,u[f],n,"string"==typeof t);d=r.merge(d,g,n)}return!0===n.allowSparse?d:r.compact(d)}},91207:(t,e,n)=>{"use strict";var r=n(920),o=n(62795),a=n(95902),i=Object.prototype.hasOwnProperty,l={brackets:function(t){return t+"[]"},comma:"comma",indices:function(t,e){return t+"["+e+"]"},repeat:function(t){return t}},s=Array.isArray,c=Array.prototype.push,u=function(t,e){c.apply(t,s(e)?e:[e])},d=Date.prototype.toISOString,p=a.default,h={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:o.encode,encodeValuesOnly:!1,format:p,formatter:a.formatters[p],indices:!1,serializeDate:function(t){return d.call(t)},skipNulls:!1,strictNullHandling:!1},f={},g=function t(e,n,a,i,l,c,d,p,g,m,v,b,y,A,w,_,C,k){for(var x,S=e,D=k,E=0,T=!1;void 0!==(D=D.get(f))&&!T;){var O=D.get(e);if(E+=1,void 0!==O){if(O===E)throw new RangeError("Cyclic object value");T=!0}void 0===D.get(f)&&(E=0)}if("function"==typeof m?S=m(n,S):S instanceof Date?S=y(S):"comma"===a&&s(S)&&(S=o.maybeMap(S,(function(t){return t instanceof Date?y(t):t}))),null===S){if(c)return g&&!_?g(n,h.encoder,C,"key",A):n;S=""}if("string"==typeof(x=S)||"number"==typeof x||"boolean"==typeof x||"symbol"==typeof x||"bigint"==typeof x||o.isBuffer(S))return g?[w(_?n:g(n,h.encoder,C,"key",A))+"="+w(g(S,h.encoder,C,"value",A))]:[w(n)+"="+w(String(S))];var I,j=[];if(void 0===S)return j;if("comma"===a&&s(S))_&&g&&(S=o.maybeMap(S,g)),I=[{value:S.length>0?S.join(",")||null:void 0}];else if(s(m))I=m;else{var M=Object.keys(S);I=v?M.sort(v):M}var P=p?n.replace(/\./g,"%2E"):n,L=i&&s(S)&&1===S.length?P+"[]":P;if(l&&s(S)&&0===S.length)return L+"[]";for(var N=0;N<I.length;++N){var B=I[N],F="object"==typeof B&&void 0!==B.value?B.value:S[B];if(!d||null!==F){var R=b&&p?B.replace(/\./g,"%2E"):B,q=s(S)?"function"==typeof a?a(L,R):L:L+(b?"."+R:"["+R+"]");k.set(e,E);var H=r();H.set(f,k),u(j,t(F,q,a,i,l,c,d,p,"comma"===a&&_&&s(S)?null:g,m,v,b,y,A,w,_,C,H))}}return j};t.exports=function(t,e){var n,o=t,c=function(t){if(!t)return h;if(void 0!==t.allowEmptyArrays&&"boolean"!=typeof t.allowEmptyArrays)throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(void 0!==t.encodeDotInKeys&&"boolean"!=typeof t.encodeDotInKeys)throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(null!==t.encoder&&void 0!==t.encoder&&"function"!=typeof t.encoder)throw new TypeError("Encoder has to be a function.");var e=t.charset||h.charset;if(void 0!==t.charset&&"utf-8"!==t.charset&&"iso-8859-1"!==t.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var n=a.default;if(void 0!==t.format){if(!i.call(a.formatters,t.format))throw new TypeError("Unknown format option provided.");n=t.format}var r,o=a.formatters[n],c=h.filter;if(("function"==typeof t.filter||s(t.filter))&&(c=t.filter),r=t.arrayFormat in l?t.arrayFormat:"indices"in t?t.indices?"indices":"repeat":h.arrayFormat,"commaRoundTrip"in t&&"boolean"!=typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var u=void 0===t.allowDots?!0===t.encodeDotInKeys||h.allowDots:!!t.allowDots;return{addQueryPrefix:"boolean"==typeof t.addQueryPrefix?t.addQueryPrefix:h.addQueryPrefix,allowDots:u,allowEmptyArrays:"boolean"==typeof t.allowEmptyArrays?!!t.allowEmptyArrays:h.allowEmptyArrays,arrayFormat:r,charset:e,charsetSentinel:"boolean"==typeof t.charsetSentinel?t.charsetSentinel:h.charsetSentinel,commaRoundTrip:t.commaRoundTrip,delimiter:void 0===t.delimiter?h.delimiter:t.delimiter,encode:"boolean"==typeof t.encode?t.encode:h.encode,encodeDotInKeys:"boolean"==typeof t.encodeDotInKeys?t.encodeDotInKeys:h.encodeDotInKeys,encoder:"function"==typeof t.encoder?t.encoder:h.encoder,encodeValuesOnly:"boolean"==typeof t.encodeValuesOnly?t.encodeValuesOnly:h.encodeValuesOnly,filter:c,format:n,formatter:o,serializeDate:"function"==typeof t.serializeDate?t.serializeDate:h.serializeDate,skipNulls:"boolean"==typeof t.skipNulls?t.skipNulls:h.skipNulls,sort:"function"==typeof t.sort?t.sort:null,strictNullHandling:"boolean"==typeof t.strictNullHandling?t.strictNullHandling:h.strictNullHandling}}(e);"function"==typeof c.filter?o=(0,c.filter)("",o):s(c.filter)&&(n=c.filter);var d=[];if("object"!=typeof o||null===o)return"";var p=l[c.arrayFormat],f="comma"===p&&c.commaRoundTrip;n||(n=Object.keys(o)),c.sort&&n.sort(c.sort);for(var m=r(),v=0;v<n.length;++v){var b=n[v];c.skipNulls&&null===o[b]||u(d,g(o[b],b,p,f,c.allowEmptyArrays,c.strictNullHandling,c.skipNulls,c.encodeDotInKeys,c.encode?c.encoder:null,c.filter,c.sort,c.allowDots,c.serializeDate,c.format,c.formatter,c.encodeValuesOnly,c.charset,m))}var y=d.join(c.delimiter),A=!0===c.addQueryPrefix?"?":"";return c.charsetSentinel&&("iso-8859-1"===c.charset?A+="utf8=%26%2310003%3B&":A+="utf8=%E2%9C%93&"),y.length>0?A+y:""}},62795:(t,e,n)=>{"use strict";var r=n(95902),o=Object.prototype.hasOwnProperty,a=Array.isArray,i=function(){for(var t=[],e=0;e<256;++e)t.push("%"+((e<16?"0":"")+e.toString(16)).toUpperCase());return t}(),l=function(t,e){for(var n=e&&e.plainObjects?Object.create(null):{},r=0;r<t.length;++r)void 0!==t[r]&&(n[r]=t[r]);return n};t.exports={arrayToObject:l,assign:function(t,e){return Object.keys(e).reduce((function(t,n){return t[n]=e[n],t}),t)},combine:function(t,e){return[].concat(t,e)},compact:function(t){for(var e=[{obj:{o:t},prop:"o"}],n=[],r=0;r<e.length;++r)for(var o=e[r],i=o.obj[o.prop],l=Object.keys(i),s=0;s<l.length;++s){var c=l[s],u=i[c];"object"==typeof u&&null!==u&&-1===n.indexOf(u)&&(e.push({obj:i,prop:c}),n.push(u))}return function(t){for(;t.length>1;){var e=t.pop(),n=e.obj[e.prop];if(a(n)){for(var r=[],o=0;o<n.length;++o)void 0!==n[o]&&r.push(n[o]);e.obj[e.prop]=r}}}(e),t},decode:function(t,e,n){var r=t.replace(/\+/g," ");if("iso-8859-1"===n)return r.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(r)}catch(t){return r}},encode:function(t,e,n,o,a){if(0===t.length)return t;var l=t;if("symbol"==typeof t?l=Symbol.prototype.toString.call(t):"string"!=typeof t&&(l=String(t)),"iso-8859-1"===n)return escape(l).replace(/%u[0-9a-f]{4}/gi,(function(t){return"%26%23"+parseInt(t.slice(2),16)+"%3B"}));for(var s="",c=0;c<l.length;++c){var u=l.charCodeAt(c);45===u||46===u||95===u||126===u||u>=48&&u<=57||u>=65&&u<=90||u>=97&&u<=122||a===r.RFC1738&&(40===u||41===u)?s+=l.charAt(c):u<128?s+=i[u]:u<2048?s+=i[192|u>>6]+i[128|63&u]:u<55296||u>=57344?s+=i[224|u>>12]+i[128|u>>6&63]+i[128|63&u]:(c+=1,u=65536+((1023&u)<<10|1023&l.charCodeAt(c)),s+=i[240|u>>18]+i[128|u>>12&63]+i[128|u>>6&63]+i[128|63&u])}return s},isBuffer:function(t){return!(!t||"object"!=typeof t||!(t.constructor&&t.constructor.isBuffer&&t.constructor.isBuffer(t)))},isRegExp:function(t){return"[object RegExp]"===Object.prototype.toString.call(t)},maybeMap:function(t,e){if(a(t)){for(var n=[],r=0;r<t.length;r+=1)n.push(e(t[r]));return n}return e(t)},merge:function t(e,n,r){if(!n)return e;if("object"!=typeof n){if(a(e))e.push(n);else{if(!e||"object"!=typeof e)return[e,n];(r&&(r.plainObjects||r.allowPrototypes)||!o.call(Object.prototype,n))&&(e[n]=!0)}return e}if(!e||"object"!=typeof e)return[e].concat(n);var i=e;return a(e)&&!a(n)&&(i=l(e,r)),a(e)&&a(n)?(n.forEach((function(n,a){if(o.call(e,a)){var i=e[a];i&&"object"==typeof i&&n&&"object"==typeof n?e[a]=t(i,n,r):e.push(n)}else e[a]=n})),e):Object.keys(n).reduce((function(e,a){var i=n[a];return o.call(e,a)?e[a]=t(e[a],i,r):e[a]=i,e}),i)}}},88835:(t,e,n)=>{"use strict";var r=n(61270);function o(){this.protocol=null,this.slashes=null,this.auth=null,this.host=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.query=null,this.pathname=null,this.path=null,this.href=null}var a=/^([a-z0-9.+-]+:)/i,i=/:[0-9]*$/,l=/^(\/\/?(?!\/)[^?\s]*)(\?[^\s]*)?$/,s=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),c=["'"].concat(s),u=["%","/","?",";","#"].concat(c),d=["/","?","#"],p=/^[+a-z0-9A-Z_-]{0,63}$/,h=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},g={javascript:!0,"javascript:":!0},m={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0},v=n(63098);function b(t,e,n){if(t&&"object"==typeof t&&t instanceof o)return t;var r=new o;return r.parse(t,e,n),r}o.prototype.parse=function(t,e,n){if("string"!=typeof t)throw new TypeError("Parameter 'url' must be a string, not "+typeof t);var o=t.indexOf("?"),i=-1!==o&&o<t.indexOf("#")?"?":"#",s=t.split(i);s[0]=s[0].replace(/\\/g,"/");var b=t=s.join(i);if(b=b.trim(),!n&&1===t.split("#").length){var y=l.exec(b);if(y)return this.path=b,this.href=b,this.pathname=y[1],y[2]?(this.search=y[2],this.query=e?v.parse(this.search.substr(1)):this.search.substr(1)):e&&(this.search="",this.query={}),this}var A=a.exec(b);if(A){var w=(A=A[0]).toLowerCase();this.protocol=w,b=b.substr(A.length)}if(n||A||b.match(/^\/\/[^@/]+@[^@/]+/)){var _="//"===b.substr(0,2);!_||A&&g[A]||(b=b.substr(2),this.slashes=!0)}if(!g[A]&&(_||A&&!m[A])){for(var C,k,x=-1,S=0;S<d.length;S++)-1!==(D=b.indexOf(d[S]))&&(-1===x||D<x)&&(x=D);for(-1!==(k=-1===x?b.lastIndexOf("@"):b.lastIndexOf("@",x))&&(C=b.slice(0,k),b=b.slice(k+1),this.auth=decodeURIComponent(C)),x=-1,S=0;S<u.length;S++){var D;-1!==(D=b.indexOf(u[S]))&&(-1===x||D<x)&&(x=D)}-1===x&&(x=b.length),this.host=b.slice(0,x),b=b.slice(x),this.parseHost(),this.hostname=this.hostname||"";var E="["===this.hostname[0]&&"]"===this.hostname[this.hostname.length-1];if(!E)for(var T=this.hostname.split(/\./),O=(S=0,T.length);S<O;S++){var I=T[S];if(I&&!I.match(p)){for(var j="",M=0,P=I.length;M<P;M++)I.charCodeAt(M)>127?j+="x":j+=I[M];if(!j.match(p)){var L=T.slice(0,S),N=T.slice(S+1),B=I.match(h);B&&(L.push(B[1]),N.unshift(B[2])),N.length&&(b="/"+N.join(".")+b),this.hostname=L.join(".");break}}}this.hostname.length>255?this.hostname="":this.hostname=this.hostname.toLowerCase(),E||(this.hostname=r.toASCII(this.hostname));var F=this.port?":"+this.port:"",R=this.hostname||"";this.host=R+F,this.href+=this.host,E&&(this.hostname=this.hostname.substr(1,this.hostname.length-2),"/"!==b[0]&&(b="/"+b))}if(!f[w])for(S=0,O=c.length;S<O;S++){var q=c[S];if(-1!==b.indexOf(q)){var H=encodeURIComponent(q);H===q&&(H=escape(q)),b=b.split(q).join(H)}}var U=b.indexOf("#");-1!==U&&(this.hash=b.substr(U),b=b.slice(0,U));var V=b.indexOf("?");if(-1!==V?(this.search=b.substr(V),this.query=b.substr(V+1),e&&(this.query=v.parse(this.query)),b=b.slice(0,V)):e&&(this.search="",this.query={}),b&&(this.pathname=b),m[w]&&this.hostname&&!this.pathname&&(this.pathname="/"),this.pathname||this.search){F=this.pathname||"";var z=this.search||"";this.path=F+z}return this.href=this.format(),this},o.prototype.format=function(){var t=this.auth||"";t&&(t=(t=encodeURIComponent(t)).replace(/%3A/i,":"),t+="@");var e=this.protocol||"",n=this.pathname||"",r=this.hash||"",o=!1,a="";this.host?o=t+this.host:this.hostname&&(o=t+(-1===this.hostname.indexOf(":")?this.hostname:"["+this.hostname+"]"),this.port&&(o+=":"+this.port)),this.query&&"object"==typeof this.query&&Object.keys(this.query).length&&(a=v.stringify(this.query,{arrayFormat:"repeat",addQueryPrefix:!1}));var i=this.search||a&&"?"+a||"";return e&&":"!==e.substr(-1)&&(e+=":"),this.slashes||(!e||m[e])&&!1!==o?(o="//"+(o||""),n&&"/"!==n.charAt(0)&&(n="/"+n)):o||(o=""),r&&"#"!==r.charAt(0)&&(r="#"+r),i&&"?"!==i.charAt(0)&&(i="?"+i),e+o+(n=n.replace(/[?#]/g,(function(t){return encodeURIComponent(t)})))+(i=i.replace("#","%23"))+r},o.prototype.resolve=function(t){return this.resolveObject(b(t,!1,!0)).format()},o.prototype.resolveObject=function(t){if("string"==typeof t){var e=new o;e.parse(t,!1,!0),t=e}for(var n=new o,r=Object.keys(this),a=0;a<r.length;a++){var i=r[a];n[i]=this[i]}if(n.hash=t.hash,""===t.href)return n.href=n.format(),n;if(t.slashes&&!t.protocol){for(var l=Object.keys(t),s=0;s<l.length;s++){var c=l[s];"protocol"!==c&&(n[c]=t[c])}return m[n.protocol]&&n.hostname&&!n.pathname&&(n.pathname="/",n.path=n.pathname),n.href=n.format(),n}if(t.protocol&&t.protocol!==n.protocol){if(!m[t.protocol]){for(var u=Object.keys(t),d=0;d<u.length;d++){var p=u[d];n[p]=t[p]}return n.href=n.format(),n}if(n.protocol=t.protocol,t.host||g[t.protocol])n.pathname=t.pathname;else{for(var h=(t.pathname||"").split("/");h.length&&!(t.host=h.shift()););t.host||(t.host=""),t.hostname||(t.hostname=""),""!==h[0]&&h.unshift(""),h.length<2&&h.unshift(""),n.pathname=h.join("/")}if(n.search=t.search,n.query=t.query,n.host=t.host||"",n.auth=t.auth,n.hostname=t.hostname||t.host,n.port=t.port,n.pathname||n.search){var f=n.pathname||"",v=n.search||"";n.path=f+v}return n.slashes=n.slashes||t.slashes,n.href=n.format(),n}var b=n.pathname&&"/"===n.pathname.charAt(0),y=t.host||t.pathname&&"/"===t.pathname.charAt(0),A=y||b||n.host&&t.pathname,w=A,_=n.pathname&&n.pathname.split("/")||[],C=(h=t.pathname&&t.pathname.split("/")||[],n.protocol&&!m[n.protocol]);if(C&&(n.hostname="",n.port=null,n.host&&(""===_[0]?_[0]=n.host:_.unshift(n.host)),n.host="",t.protocol&&(t.hostname=null,t.port=null,t.host&&(""===h[0]?h[0]=t.host:h.unshift(t.host)),t.host=null),A=A&&(""===h[0]||""===_[0])),y)n.host=t.host||""===t.host?t.host:n.host,n.hostname=t.hostname||""===t.hostname?t.hostname:n.hostname,n.search=t.search,n.query=t.query,_=h;else if(h.length)_||(_=[]),_.pop(),_=_.concat(h),n.search=t.search,n.query=t.query;else if(null!=t.search)return C&&(n.host=_.shift(),n.hostname=n.host,(E=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=E.shift(),n.hostname=E.shift(),n.host=n.hostname)),n.search=t.search,n.query=t.query,null===n.pathname&&null===n.search||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.href=n.format(),n;if(!_.length)return n.pathname=null,n.search?n.path="/"+n.search:n.path=null,n.href=n.format(),n;for(var k=_.slice(-1)[0],x=(n.host||t.host||_.length>1)&&("."===k||".."===k)||""===k,S=0,D=_.length;D>=0;D--)"."===(k=_[D])?_.splice(D,1):".."===k?(_.splice(D,1),S++):S&&(_.splice(D,1),S--);if(!A&&!w)for(;S--;S)_.unshift("..");!A||""===_[0]||_[0]&&"/"===_[0].charAt(0)||_.unshift(""),x&&"/"!==_.join("/").substr(-1)&&_.push("");var E,T=""===_[0]||_[0]&&"/"===_[0].charAt(0);return C&&(n.hostname=T?"":_.length?_.shift():"",n.host=n.hostname,(E=!!(n.host&&n.host.indexOf("@")>0)&&n.host.split("@"))&&(n.auth=E.shift(),n.hostname=E.shift(),n.host=n.hostname)),(A=A||n.host&&_.length)&&!T&&_.unshift(""),_.length>0?n.pathname=_.join("/"):(n.pathname=null,n.path=null),null===n.pathname&&null===n.search||(n.path=(n.pathname?n.pathname:"")+(n.search?n.search:"")),n.auth=t.auth||n.auth,n.slashes=n.slashes||t.slashes,n.href=n.format(),n},o.prototype.parseHost=function(){var t=this.host,e=i.exec(t);e&&(":"!==(e=e[0])&&(this.port=e.substr(1)),t=t.substr(0,t.length-e.length)),t&&(this.hostname=t)},e.parse=b,e.resolve=function(t,e){return b(t,!1,!0).resolve(e)},e.resolveObject=function(t,e){return t?b(t,!1,!0).resolveObject(e):e},e.format=function(t){return"string"==typeof t&&(t=b(t)),t instanceof o?t.format():o.prototype.format.call(t)},e.Url=o},42634:()=>{}},a={};function i(t){var e=a[t];if(void 0!==e)return e.exports;var n=a[t]={id:t,loaded:!1,exports:{}};return o[t].call(n.exports,n,n.exports,i),n.loaded=!0,n.exports}i.m=o,e=[],i.O=(t,n,r,o)=>{if(!n){var a=1/0;for(u=0;u<e.length;u++){n=e[u][0],r=e[u][1],o=e[u][2];for(var l=!0,s=0;s<n.length;s++)(!1&o||a>=o)&&Object.keys(i.O).every((t=>i.O[t](n[s])))?n.splice(s--,1):(l=!1,o<a&&(a=o));if(l){e.splice(u--,1);var c=r();void 0!==c&&(t=c)}}return t}o=o||0;for(var u=e.length;u>0&&e[u-1][2]>o;u--)e[u]=e[u-1];e[u]=[n,r,o]},i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.f={},i.e=t=>Promise.all(Object.keys(i.f).reduce(((e,n)=>(i.f[n](t,e),e)),[])),i.u=t=>t+"-"+t+".js?v="+{4065:"f1139ec30708e44e1094",4254:"96661b9f421b07ce7189"}[t],i.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),n={},r="nextcloud:",i.l=(t,e,o,a)=>{if(n[t])n[t].push(e);else{var l,s;if(void 0!==o)for(var c=document.getElementsByTagName("script"),u=0;u<c.length;u++){var d=c[u];if(d.getAttribute("src")==t||d.getAttribute("data-webpack")==r+o){l=d;break}}l||(s=!0,(l=document.createElement("script")).charset="utf-8",l.timeout=120,i.nc&&l.setAttribute("nonce",i.nc),l.setAttribute("data-webpack",r+o),l.src=t),n[t]=[e];var p=(e,r)=>{l.onerror=l.onload=null,clearTimeout(h);var o=n[t];if(delete n[t],l.parentNode&&l.parentNode.removeChild(l),o&&o.forEach((t=>t(r))),e)return e(r)},h=setTimeout(p.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=p.bind(null,l.onerror),l.onload=p.bind(null,l.onload),s&&document.head.appendChild(l)}},i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nmd=t=>(t.paths=[],t.children||(t.children=[]),t),i.j=6673,(()=>{var t;i.g.importScripts&&(t=i.g.location+"");var e=i.g.document;if(!t&&e&&(e.currentScript&&(t=e.currentScript.src),!t)){var n=e.getElementsByTagName("script");if(n.length)for(var r=n.length-1;r>-1&&(!t||!/^http(s?):/.test(t));)t=n[r--].src}if(!t)throw new Error("Automatic publicPath is not supported in this browser");t=t.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),i.p=t})(),(()=>{i.b=document.baseURI||self.location.href;var t={6673:0};i.f.j=(e,n)=>{var r=i.o(t,e)?t[e]:void 0;if(0!==r)if(r)n.push(r[2]);else{var o=new Promise(((n,o)=>r=t[e]=[n,o]));n.push(r[2]=o);var a=i.p+i.u(e),l=new Error;i.l(a,(n=>{if(i.o(t,e)&&(0!==(r=t[e])&&(t[e]=void 0),r)){var o=n&&("load"===n.type?"missing":n.type),a=n&&n.target&&n.target.src;l.message="Loading chunk "+e+" failed.\n("+o+": "+a+")",l.name="ChunkLoadError",l.type=o,l.request=a,r[1](l)}}),"chunk-"+e,e)}},i.O.j=e=>0===t[e];var e=(e,n)=>{var r,o,a=n[0],l=n[1],s=n[2],c=0;if(a.some((e=>0!==t[e]))){for(r in l)i.o(l,r)&&(i.m[r]=l[r]);if(s)var u=s(i)}for(e&&e(n);c<a.length;c++)o=a[c],i.o(t,o)&&t[o]&&t[o][0](),t[o]=0;return i.O(u)},n=self.webpackChunknextcloud=self.webpackChunknextcloud||[];n.forEach(e.bind(null,0)),n.push=e.bind(null,n.push.bind(n))})(),i.nc=void 0;var l=i.O(void 0,[4208],(()=>i(65497)));l=i.O(l)})(); +//# sourceMappingURL=theming-personal-theming.js.map?v=e1b22c35ab24ca06e805
\ No newline at end of file diff --git a/dist/theming-personal-theming.js.map b/dist/theming-personal-theming.js.map index 04d6b687771..34605c65198 100644 --- a/dist/theming-personal-theming.js.map +++ b/dist/theming-personal-theming.js.map @@ -1 +1 @@ -{"version":3,"file":"theming-personal-theming.js?v=54ce2044cd49458ac214","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ImageEdit.vue?e9bd","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue?vue&type=template&id=78c4184e","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?0f9a","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?65db","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?da76","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?7631","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?69ad","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?8797","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue","webpack:///nextcloud/node_modules/sortablejs/modular/sortable.esm.js","webpack:///nextcloud/node_modules/@vueuse/integrations/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?649a","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?aad4","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue","webpack:///nextcloud/node_modules/@vueuse/integrations/useSortable.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?96a5","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?dbd7","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Undo.vue?d998","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue?vue&type=template&id=a6d3d438","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/UserAppMenuSection.vue?fab3","webpack://nextcloud/./apps/theming/src/components/UserAppMenuSection.vue?402e","webpack:///nextcloud/apps/theming/src/UserThemes.vue","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/UserThemes.vue?3d37","webpack://nextcloud/./apps/theming/src/UserThemes.vue?7eb2","webpack://nextcloud/./apps/theming/src/UserThemes.vue?b683","webpack:///nextcloud/apps/theming/src/personal-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=style&index=0&id=1ed3985c&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss","webpack:///nextcloud/node_modules/lodash/_baseEach.js","webpack:///nextcloud/node_modules/lodash/_baseFilter.js","webpack:///nextcloud/node_modules/lodash/_baseForOwn.js","webpack:///nextcloud/node_modules/lodash/_createBaseEach.js","webpack:///nextcloud/node_modules/lodash/defaults.js","webpack:///nextcloud/node_modules/lodash/filter.js","webpack:///nextcloud/node_modules/node-vibrant/lib/browser.js","webpack:///nextcloud/node_modules/node-vibrant/lib/builder.js","webpack:///nextcloud/node_modules/node-vibrant/lib/color.js","webpack:///nextcloud/node_modules/node-vibrant/lib/filter/default.js","webpack:///nextcloud/node_modules/node-vibrant/lib/filter/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/generator/default.js","webpack:///nextcloud/node_modules/node-vibrant/lib/generator/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/image/base.js","webpack:///nextcloud/node_modules/node-vibrant/lib/image/browser.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/mmcq.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/pqueue.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/vbox.js","webpack:///nextcloud/node_modules/node-vibrant/lib/util.js","webpack:///nextcloud/node_modules/node-vibrant/lib/vibrant.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/url/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon image-edit-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ImageEditIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageEdit.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageEdit.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ImageEdit.vue?vue&type=template&id=78c4184e\"\nimport script from \"./ImageEdit.vue?vue&type=script&lang=js\"\nexport * from \"./ImageEdit.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon image-edit-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Greta Doci <gretadoci@gmail.com>\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"background-selector\" data-user-theming-background-settings>\n\t\t<!-- Custom background -->\n\t\t<button :aria-pressed=\"backgroundImage === 'custom'\"\n\t\t\t:class=\"{\n\t\t\t\t'icon-loading': loading === 'custom',\n\t\t\t\t'background background__filepicker': true,\n\t\t\t\t'background--active': backgroundImage === 'custom'\n\t\t\t}\"\n\t\t\t:data-color-bright=\"invertTextColor(Theming.color)\"\n\t\t\tdata-user-theming-background-custom\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('theming', 'Custom background') }}\n\t\t\t<ImageEdit v-if=\"backgroundImage !== 'custom'\" :size=\"26\" />\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Default background -->\n\t\t<button :aria-pressed=\"backgroundImage === 'default'\"\n\t\t\t:class=\"{\n\t\t\t\t'icon-loading': loading === 'default',\n\t\t\t\t'background background__default': true,\n\t\t\t\t'background--active': backgroundImage === 'default'\n\t\t\t}\"\n\t\t\t:data-color-bright=\"invertTextColor(Theming.defaultColor)\"\n\t\t\t:style=\"{ '--border-color': Theming.defaultColor }\"\n\t\t\tdata-user-theming-background-default\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('theming', 'Default background') }}\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Custom color picker -->\n\t\t<div class=\"background-color\"\n\t\t\tdata-user-theming-background-color>\n\t\t\t<NcColorPicker v-model=\"Theming.color\"\n\t\t\t\t@input=\"debouncePickColor\">\n\t\t\t\t<NcButton type=\"ternary\">\n\t\t\t\t\t{{ t('theming', 'Change color') }}\n\t\t\t\t</NcButton>\n\t\t\t</NcColorPicker>\n\t\t</div>\n\n\t\t<!-- Remove background -->\n\t\t<button :aria-pressed=\"isBackgroundDisabled\"\n\t\t\t:class=\"{\n\t\t\t\t'background background__delete': true,\n\t\t\t\t'background--active': isBackgroundDisabled\n\t\t\t}\"\n\t\t\tdata-user-theming-background-clear\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"removeBackground\">\n\t\t\t{{ t('theming', 'No background') }}\n\t\t\t<Close v-if=\"!isBackgroundDisabled\" :size=\"32\" />\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Background set selection -->\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\t:title=\"shippedBackground.details.attribution\"\n\t\t\t:aria-label=\"shippedBackground.details.description\"\n\t\t\t:aria-pressed=\"backgroundImage === shippedBackground.name\"\n\t\t\t:class=\"{\n\t\t\t\t'background background__shipped': true,\n\t\t\t\t'icon-loading': loading === shippedBackground.name,\n\t\t\t\t'background--active': backgroundImage === shippedBackground.name\n\t\t\t}\"\n\t\t\t:data-color-bright=\"shippedBackground.details.theming === 'dark'\"\n\t\t\t:data-user-theming-background-shipped=\"shippedBackground.name\"\n\t\t\t:style=\"{ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\">\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath, generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getFilePickerBuilder, showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { Palette } from 'node-vibrant/lib/color.js'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcColorPicker from '@nextcloud/vue/dist/Components/NcColorPicker.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Vibrant from 'node-vibrant'\n\nimport Check from 'vue-material-design-icons/Check.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\nimport ImageEdit from 'vue-material-design-icons/ImageEdit.vue'\n\nconst backgroundImage = loadState('theming', 'backgroundImage')\nconst shippedBackgroundList = loadState('theming', 'shippedBackgrounds')\nconst themingDefaultBackground = loadState('theming', 'themingDefaultBackground')\nconst defaultShippedBackground = loadState('theming', 'defaultShippedBackground')\n\nconst prefixWithBaseUrl = (url) => generateFilePath('theming', '', 'img/background/') + url\n\nexport default {\n\tname: 'BackgroundSettings',\n\n\tcomponents: {\n\t\tCheck,\n\t\tClose,\n\t\tImageEdit,\n\t\tNcButton,\n\t\tNcColorPicker,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tTheming: loadState('theming', 'data', {}),\n\n\t\t\t// User background image and color settings\n\t\t\tbackgroundImage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList)\n\t\t\t\t.map(fileName => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\turl: prefixWithBaseUrl(fileName),\n\t\t\t\t\t\tpreview: prefixWithBaseUrl('preview/' + fileName),\n\t\t\t\t\t\tdetails: shippedBackgroundList[fileName],\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(background => {\n\t\t\t\t\t// If the admin did not changed the global background\n\t\t\t\t\t// let's hide the default background to not show it twice\n\t\t\t\t\tif (!this.isGlobalBackgroundDeleted && !this.isGlobalBackgroundDefault) {\n\t\t\t\t\t\treturn background.name !== defaultShippedBackground\n\t\t\t\t\t}\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t},\n\n\t\tisGlobalBackgroundDefault() {\n\t\t\treturn !!themingDefaultBackground\n\t\t},\n\n\t\tisGlobalBackgroundDeleted() {\n\t\t\treturn themingDefaultBackground === 'backgroundColor'\n\t\t},\n\n\t\tisBackgroundDisabled() {\n\t\t\treturn this.backgroundImage === 'disabled'\n\t\t\t|| !this.backgroundImage\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Do we need to invert the text if color is too bright?\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tinvertTextColor(color) {\n\t\t\treturn this.calculateLuma(color) > 0.6\n\t\t},\n\n\t\t/**\n\t\t * Calculate luminance of provided hex color\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tcalculateLuma(color) {\n\t\t\tconst [red, green, blue] = this.hexToRGB(color)\n\t\t\treturn (0.2126 * red + 0.7152 * green + 0.0722 * blue) / 255\n\t\t},\n\n\t\t/**\n\t\t * Convert hex color to RGB\n\t\t *\n\t\t * @param {string} hex the hex color\n\t\t */\n\t\thexToRGB(hex) {\n\t\t\tconst result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\t\t\treturn result\n\t\t\t\t? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]\n\t\t\t\t: null\n\t\t},\n\n\t\t/**\n\t\t * Update local state\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.backgroundColor background color value\n\t\t * @param {string} data.backgroundImage background image value\n\t\t * @param {string} data.version cache buster number\n\t\t * @see https://github.com/nextcloud/server/blob/c78bd45c64d9695724fc44fe8453a88824b85f2f/apps/theming/lib/Controller/UserThemeController.php#L187-L191\n\t\t */\n\t\tasync update(data) {\n\t\t\t// Update state\n\t\t\tthis.backgroundImage = data.backgroundImage\n\t\t\tthis.Theming.color = data.backgroundColor\n\n\t\t\t// Notify parent and reload style\n\t\t\tthis.$emit('update:background')\n\t\t\tthis.loading = false\n\t\t},\n\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setFile(path, color = null) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/custom'), { value: path, color })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync removeBackground() {\n\t\t\tthis.loading = 'remove'\n\t\t\tconst result = await axios.delete(generateUrl('/apps/theming/background/custom'))\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync pickColor(event) {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = event?.target?.dataset?.color || this.Theming?.color || '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/color'), { color })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tdebouncePickColor: debounce(function(...args) {\n\t\t\tthis.pickColor(...args)\n\t\t}, 200),\n\n\t\tpickFile() {\n\t\t\tconst picker = getFilePickerBuilder(t('theming', 'Select a background from your files'))\n\t\t\t\t.allowDirectories(false)\n\t\t\t\t.setMimeTypeFilter(['image/png', 'image/gif', 'image/jpeg', 'image/svg+xml', 'image/svg'])\n\t\t\t\t.setMultiSelect(false)\n\t\t\t\t.addButton({\n\t\t\t\t\tid: 'select',\n\t\t\t\t\tlabel: t('theming', 'Select background'),\n\t\t\t\t\tcallback: (nodes) => {\n\t\t\t\t\t\tthis.applyFile(nodes[0]?.path)\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t})\n\t\t\t\t.build()\n\t\t\tpicker.pick()\n\t\t},\n\n\t\tasync applyFile(path) {\n\t\t\tif (!path || typeof path !== 'string' || path.trim().length === 0 || path === '/') {\n\t\t\t\tconsole.error('No valid background have been selected', { path })\n\t\t\t\tshowError(t('theming', 'No background has been selected'))\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loading = 'custom'\n\n\t\t\t// Extract primary color from image\n\t\t\tlet response = null\n\t\t\tlet color = null\n\t\t\ttry {\n\t\t\t\tconst fileUrl = generateRemoteUrl('dav/files/' + getCurrentUser().uid + path)\n\t\t\t\tresponse = await axios.get(fileUrl, { responseType: 'blob' })\n\t\t\t\tconst blobUrl = URL.createObjectURL(response.data)\n\t\t\t\tconst palette = await this.getColorPaletteFromBlob(blobUrl)\n\n\t\t\t\t// DarkVibrant is accessible AND visually pleasing\n\t\t\t\t// Vibrant is not accessible enough and others are boring\n\t\t\t\tcolor = palette?.DarkVibrant?.hex\n\t\t\t\tthis.setFile(path, color)\n\n\t\t\t\t// Log data\n\t\t\t\tconsole.debug('Extracted colour', color, 'from custom image', path, palette)\n\t\t\t} catch (error) {\n\t\t\t\tthis.setFile(path)\n\t\t\t\tconsole.error('Unable to extract colour from custom image', { error, path, response, color })\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Extract a Vibrant color palette from a blob URL\n\t\t *\n\t\t * @param {string} blobUrl the blob URL\n\t\t * @return {Promise<Palette>}\n\t\t */\n\t\tgetColorPaletteFromBlob(blobUrl) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst vibrant = new Vibrant(blobUrl)\n\t\t\t\tvibrant.getPalette((error, palette) => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(palette)\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background-color {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)), var(--image-background-plain, var(--image-background-default));\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t\tborder-color: var(--color-main-background) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t.check-icon {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) {\n\t\t\t.check-icon {\n\t\t\t\t// Show checkmark\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=1175e65a&scoped=true\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1175e65a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"background-selector\",attrs:{\"data-user-theming-background-settings\":\"\"}},[_c('button',{class:{\n\t\t\t'icon-loading': _vm.loading === 'custom',\n\t\t\t'background background__filepicker': true,\n\t\t\t'background--active': _vm.backgroundImage === 'custom'\n\t\t},attrs:{\"aria-pressed\":_vm.backgroundImage === 'custom',\"data-color-bright\":_vm.invertTextColor(_vm.Theming.color),\"data-user-theming-background-custom\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Custom background'))+\"\\n\\t\\t\"),(_vm.backgroundImage !== 'custom')?_c('ImageEdit',{attrs:{\"size\":26}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('button',{class:{\n\t\t\t'icon-loading': _vm.loading === 'default',\n\t\t\t'background background__default': true,\n\t\t\t'background--active': _vm.backgroundImage === 'default'\n\t\t},style:({ '--border-color': _vm.Theming.defaultColor }),attrs:{\"aria-pressed\":_vm.backgroundImage === 'default',\"data-color-bright\":_vm.invertTextColor(_vm.Theming.defaultColor),\"data-user-theming-background-default\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Default background'))+\"\\n\\t\\t\"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('div',{staticClass:\"background-color\",attrs:{\"data-user-theming-background-color\":\"\"}},[_c('NcColorPicker',{on:{\"input\":_vm.debouncePickColor},model:{value:(_vm.Theming.color),callback:function ($$v) {_vm.$set(_vm.Theming, \"color\", $$v)},expression:\"Theming.color\"}},[_c('NcButton',{attrs:{\"type\":\"ternary\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Change color'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('button',{class:{\n\t\t\t'background background__delete': true,\n\t\t\t'background--active': _vm.isBackgroundDisabled\n\t\t},attrs:{\"aria-pressed\":_vm.isBackgroundDisabled,\"data-user-theming-background-clear\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.removeBackground}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'No background'))+\"\\n\\t\\t\"),(!_vm.isBackgroundDisabled)?_c('Close',{attrs:{\"size\":32}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{key:shippedBackground.name,class:{\n\t\t\t'background background__shipped': true,\n\t\t\t'icon-loading': _vm.loading === shippedBackground.name,\n\t\t\t'background--active': _vm.backgroundImage === shippedBackground.name\n\t\t},style:({ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }),attrs:{\"title\":shippedBackground.details.attribution,\"aria-label\":shippedBackground.details.description,\"aria-pressed\":_vm.backgroundImage === shippedBackground.name,\"data-color-bright\":shippedBackground.details.theming === 'dark',\"data-user-theming-background-shipped\":shippedBackground.name,\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}},[_c('Check',{attrs:{\"size\":44}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"theming__preview\",class:'theming__preview--' + _vm.theme.id},[_c('div',{staticClass:\"theming__preview-image\",style:({ backgroundImage: 'url(' + _vm.img + ')' }),on:{\"click\":_vm.onToggle}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.theme.title))]),_vm._v(\" \"),_c('p',{staticClass:\"theming__preview-explanation\"},[_vm._v(_vm._s(_vm.theme.description))]),_vm._v(\" \"),(_vm.enforced)?_c('span',{staticClass:\"theming__preview-warning\",attrs:{\"role\":\"note\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Theme selection is enforced'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.checked,\"disabled\":_vm.enforced,\"name\":_vm.name,\"type\":_vm.switchType},on:{\"update:checked\":function($event){_vm.checked=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.theme.enableLabel)+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div :class=\"'theming__preview--' + theme.id\" class=\"theming__preview\">\n\t\t<div class=\"theming__preview-image\" :style=\"{ backgroundImage: 'url(' + img + ')' }\" @click=\"onToggle\" />\n\t\t<div class=\"theming__preview-description\">\n\t\t\t<h3>{{ theme.title }}</h3>\n\t\t\t<p class=\"theming__preview-explanation\">{{ theme.description }}</p>\n\t\t\t<span v-if=\"enforced\" class=\"theming__preview-warning\" role=\"note\">\n\t\t\t\t{{ t('theming', 'Theme selection is enforced') }}\n\t\t\t</span>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"checked\"\n\t\t\t\t:disabled=\"enforced\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:type=\"switchType\">\n\t\t\t\t{{ theme.enableLabel }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath } from '@nextcloud/router'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\n\nexport default {\n\tname: 'ItemPreview',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\tprops: {\n\t\tenforced: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ttheme: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tunique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tswitchType() {\n\t\t\treturn this.unique ? 'switch' : 'radio'\n\t\t},\n\n\t\tname() {\n\t\t\treturn !this.unique ? this.type : null\n\t\t},\n\n\t\timg() {\n\t\t\treturn generateFilePath('theming', 'img', this.theme.id + '.jpg')\n\t\t},\n\n\t\tchecked: {\n\t\t\tget() {\n\t\t\t\treturn this.selected\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tconsole.debug('Changed theme', this.theme.id, checked)\n\n\t\t\t\t// If this is a radio, we can only enable\n\t\t\t\tif (!this.unique) {\n\t\t\t\t\tthis.$emit('change', { enabled: true, id: this.theme.id })\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// If this is a switch, we can disable the theme\n\t\t\t\tthis.$emit('change', { enabled: checked === true, id: this.theme.id })\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonToggle() {\n\t\t\tif (this.switchType === 'radio') {\n\t\t\t\tthis.checked = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Invert state\n\t\t\tthis.checked = !this.checked\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n@use 'sass:math';\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-explanation {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: math.div(1024px, 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=1a08e35a&scoped=true\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js\"\nimport style0 from \"./ItemPreview.vue?vue&type=style&index=0&id=1a08e35a&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a08e35a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Navigation bar settings')}},[_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo.'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.enforcedDefaultApp)?_c('NcNoteCard',{attrs:{\"id\":_vm.elementIdEnforcedDefaultApp,\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'The default app can not be changed because it was configured by the administrator.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasAppOrderChanged)?_c('NcNoteCard',{attrs:{\"id\":_vm.elementIdAppOrderChanged,\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'The app order was changed, to see it in action you have to reload the page.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('AppOrderSelector',{staticClass:\"user-app-menu-order\",attrs:{\"aria-details\":_vm.ariaDetailsAppOrder,\"value\":_vm.appOrder},on:{\"update:value\":_vm.updateAppOrder}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"data-test-id\":\"btn-apporder-reset\",\"disabled\":!_vm.hasCustomAppOrder,\"type\":\"tertiary\"},on:{\"click\":_vm.resetAppOrder},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconUndo',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Reset default app order'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**!\n * Sortable 1.10.2\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('li',{class:{\n\t\t'order-selector-element': true,\n\t\t'order-selector-element--disabled': _vm.app.default\n\t},attrs:{\"data-cy-app-order-element\":_vm.app.id},on:{\"focusin\":function($event){return _vm.$emit('update:focus')}}},[_c('svg',{attrs:{\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 20 20\",\"role\":\"presentation\"}},[_c('image',{staticClass:\"order-selector-element__icon\",attrs:{\"preserveAspectRatio\":\"xMinYMin meet\",\"x\":\"0\",\"y\":\"0\",\"width\":\"20\",\"height\":\"20\",\"xlink:href\":_vm.app.icon}})]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__label\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.label ?? _vm.app.id)+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__actions\"},[_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isFirst && !_vm.app.default),expression:\"!isFirst && !app.default\"}],ref:\"buttonUp\",attrs:{\"aria-label\":_vm.t('settings', 'Move up'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"up\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveUp},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowUp',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isFirst || !!_vm.app.default),expression:\"isFirst || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLast && !_vm.app.default),expression:\"!isLast && !app.default\"}],ref:\"buttonDown\",attrs:{\"aria-label\":_vm.t('settings', 'Move down'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"down\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveDown},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowDown',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLast || !!_vm.app.default),expression:\"isLast || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelectorElement.vue?vue&type=template&id=081ebc45&scoped=true\"\nimport script from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"081ebc45\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',[_c('div',{staticClass:\"hidden-visually\",attrs:{\"id\":_vm.statusInfoId,\"aria-live\":\"polite\",\"role\":\"status\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.statusInfo)+\"\\n\\t\")]),_vm._v(\" \"),_c('ol',{ref:\"listElement\",staticClass:\"order-selector\",attrs:{\"data-cy-app-order\":\"\"}},_vm._l((_vm.appList),function(app,index){return _c('AppOrderSelectorElement',_vm._g({key:`${app.id}${_vm.renderCount}`,ref:\"selectorElements\",refInFor:true,attrs:{\"app\":app,\"aria-details\":_vm.ariaDetails,\"aria-describedby\":_vm.statusInfoId,\"is-first\":index === 0 || !!_vm.appList[index - 1].default,\"is-last\":index === _vm.value.length - 1}},app.default ? {} : {\n\t\t\t\t'move:up': () => _vm.moveUp(index),\n\t\t\t\t'move:down': () => _vm.moveDown(index),\n\t\t\t\t'update:focus': () => _vm.updateStatusInfo(index),\n\t\t\t}))}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { tryOnMounted, tryOnScopeDispose, toValue, unrefElement, defaultDocument } from '@vueuse/core';\nimport Sortable from 'sortablejs';\nimport { isRef, nextTick } from 'vue-demi';\n\nfunction useSortable(el, list, options = {}) {\n let sortable;\n const { document = defaultDocument, ...resetOptions } = options;\n const defaultOptions = {\n onUpdate: (e) => {\n moveArrayElement(list, e.oldIndex, e.newIndex);\n }\n };\n const start = () => {\n const target = typeof el === \"string\" ? document == null ? void 0 : document.querySelector(el) : unrefElement(el);\n if (!target || sortable !== void 0)\n return;\n sortable = new Sortable(target, { ...defaultOptions, ...resetOptions });\n };\n const stop = () => {\n sortable == null ? void 0 : sortable.destroy();\n sortable = void 0;\n };\n const option = (name, value) => {\n if (value !== void 0)\n sortable == null ? void 0 : sortable.option(name, value);\n else\n return sortable == null ? void 0 : sortable.option(name);\n };\n tryOnMounted(start);\n tryOnScopeDispose(stop);\n return {\n stop,\n start,\n option\n };\n}\nfunction moveArrayElement(list, from, to) {\n const _valueIsRef = isRef(list);\n const array = _valueIsRef ? [...toValue(list)] : toValue(list);\n if (to >= 0 && to < array.length) {\n const element = array.splice(from, 1)[0];\n nextTick(() => {\n array.splice(to, 0, element);\n if (_valueIsRef)\n list.value = array;\n });\n }\n}\n\nexport { moveArrayElement, useSortable };\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelector.vue?vue&type=template&id=35797e31&scoped=true\"\nimport script from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35797e31\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon undo-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"UndoIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Undo.vue?vue&type=template&id=a6d3d438\"\nimport script from \"./Undo.vue?vue&type=script&lang=js\"\nexport * from \"./Undo.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon undo-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserAppMenuSection.vue?vue&type=template&id=ee0f3d1a&scoped=true\"\nimport script from \"./UserAppMenuSection.vue?vue&type=script&lang=ts\"\nexport * from \"./UserAppMenuSection.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ee0f3d1a\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :name=\"t('theming', 'Appearance and accessibility settings')\"\n\t\t\t:limit-width=\"false\"\n\t\t\tclass=\"theming\">\n\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t<p v-html=\"description\" />\n\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t<p v-html=\"descriptionDetail\" />\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in themes\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:enforced=\"theme.id === enforceTheme\"\n\t\t\t\t\t:selected=\"selectedTheme.id === theme.id\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"themes.length === 1\"\n\t\t\t\t\ttype=\"theme\"\n\t\t\t\t\t@change=\"changeTheme\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in fonts\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:selected=\"theme.enabled\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"fonts.length === 1\"\n\t\t\t\t\ttype=\"font\"\n\t\t\t\t\t@change=\"changeFont\" />\n\t\t\t</div>\n\n\t\t\t<h3>{{ t('theming', 'Misc accessibility options') }}</h3>\n\t\t\t<NcCheckboxRadioSwitch type=\"checkbox\"\n\t\t\t\t:checked=\"enableBlurFilter === 'yes'\"\n\t\t\t\t:indeterminate=\"enableBlurFilter === ''\"\n\t\t\t\t@update:checked=\"changeEnableBlurFilter\">\n\t\t\t\t{{ t('theming', 'Enable blur background filter (may increase GPU load)') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :name=\"t('theming', 'Background')\"\n\t\t\tclass=\"background\"\n\t\t\tdata-user-theming-background-disabled>\n\t\t\t<template v-if=\"isUserThemingDisabled\">\n\t\t\t\t<p>{{ t('theming', 'Customization has been disabled by your administrator') }}</p>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<p>{{ t('theming', 'Set a custom background') }}</p>\n\t\t\t\t<BackgroundSettings class=\"background__grid\" @update:background=\"refreshGlobalStyles\" />\n\t\t\t</template>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :name=\"t('theming', 'Keyboard shortcuts')\">\n\t\t\t<p>{{ t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.') }}</p>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"shortcutsDisabled\"\n\t\t\t\ttype=\"switch\"\n\t\t\t\t@change=\"changeShortcutsDisabled\">\n\t\t\t\t{{ t('theming', 'Disable all keyboard shortcuts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<UserAppMenuSection />\n\t</section>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\n\nimport BackgroundSettings from './components/BackgroundSettings.vue'\nimport ItemPreview from './components/ItemPreview.vue'\nimport UserAppMenuSection from './components/UserAppMenuSection.vue'\n\nconst availableThemes = loadState('theming', 'themes', [])\nconst enforceTheme = loadState('theming', 'enforceTheme', '')\nconst shortcutsDisabled = loadState('theming', 'shortcutsDisabled', false)\nconst enableBlurFilter = loadState('theming', 'enableBlurFilter', '')\n\nconst isUserThemingDisabled = loadState('theming', 'isUserThemingDisabled')\n\nexport default {\n\tname: 'UserThemes',\n\n\tcomponents: {\n\t\tItemPreview,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t\tBackgroundSettings,\n\t\tUserAppMenuSection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableThemes,\n\n\t\t\t// Admin defined configs\n\t\t\tenforceTheme,\n\t\t\tshortcutsDisabled,\n\t\t\tisUserThemingDisabled,\n\n\t\t\tenableBlurFilter,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 1)\n\t\t},\n\n\t\tfonts() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 2)\n\t\t},\n\n\t\t// Selected theme, fallback on first (default) if none\n\t\tselectedTheme() {\n\t\t\treturn this.themes.find(theme => theme.enabled === true) || this.themes[0]\n\t\t},\n\n\t\tdescription() {\n\t\t\t// using the `t` replace method escape html, we have to do it manually :/\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.',\n\t\t\t)\n\t\t\t\t.replace('{guidelines}', this.guidelinesLink)\n\t\t\t\t.replace('{linkend}', '</a>')\n\t\t},\n\n\t\tguidelinesLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://www.w3.org/WAI/standards-guidelines/wcag/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdescriptionDetail() {\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!',\n\t\t\t)\n\t\t\t\t.replace('{issuetracker}', this.issuetrackerLink)\n\t\t\t\t.replace('{designteam}', this.designteamLink)\n\t\t\t\t.replace(/\\{linkend\\}/g, '</a>')\n\t\t},\n\n\t\tissuetrackerLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://github.com/nextcloud/server/issues/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdesignteamLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://nextcloud.com/design\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t},\n\n\twatch: {\n\t\tshortcutsDisabled(newState) {\n\t\t\tthis.changeShortcutsDisabled(newState)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t// Refresh server-side generated theming CSS\n\t\trefreshGlobalStyles() {\n\t\t\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\t\t\tconst url = new URL(theme.href)\n\t\t\t\turl.searchParams.set('v', Date.now())\n\t\t\t\tconst newTheme = theme.cloneNode()\n\t\t\t\tnewTheme.href = url.toString()\n\t\t\t\tnewTheme.onload = () => theme.remove()\n\t\t\t\tdocument.head.append(newTheme)\n\t\t\t})\n\t\t},\n\n\t\tupdateBackground(data) {\n\t\t\tthis.background = (data.type === 'custom' || data.type === 'default') ? data.type : data.value\n\t\t\tthis.refreshGlobalStyles()\n\t\t},\n\n\t\tchangeTheme({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tif (theme.id === id && enabled) {\n\t\t\t\t\ttheme.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\ttheme.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tchangeFont({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tif (font.id === id && enabled) {\n\t\t\t\t\tfont.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tfont.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tasync changeShortcutsDisabled(newState) {\n\t\t\tif (newState) {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tconfigValue: 'yes',\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync changeEnableBlurFilter() {\n\t\t\tthis.enableBlurFilter = this.enableBlurFilter === 'no' ? 'yes' : 'no'\n\t\t\tawait axios({\n\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\tappId: 'theming',\n\t\t\t\t\tconfigKey: 'force_enable_blur_filter',\n\t\t\t\t}),\n\t\t\t\tdata: {\n\t\t\t\t\tconfigValue: this.enableBlurFilter,\n\t\t\t\t},\n\t\t\t\tmethod: 'POST',\n\t\t\t})\n\t\t\t// Refresh the styles\n\t\t\tthis.$emit('update:background')\n\t\t},\n\n\t\tupdateBodyAttributes() {\n\t\t\tconst enabledThemesIDs = this.themes.filter(theme => theme.enabled === true).map(theme => theme.id)\n\t\t\tconst enabledFontsIDs = this.fonts.filter(font => font.enabled === true).map(font => font.id)\n\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${theme.id}`, theme.enabled)\n\t\t\t})\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${font.id}`, font.enabled)\n\t\t\t})\n\n\t\t\tdocument.body.setAttribute('data-themes', [...enabledThemesIDs, ...enabledFontsIDs].join(','))\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {boolean} enabled the theme state\n\t\t * @param {string} themeId the theme ID to change\n\t\t */\n\t\tasync selectItem(enabled, themeId) {\n\t\t\ttry {\n\t\t\t\tif (enabled) {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}/enable', { themeId }),\n\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}', { themeId }),\n\t\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err, err.response)\n\t\t\t\tOC.Notification.showTemporary(t('theming', err.response.data.ocs.meta.message + '. Unable to apply the setting.'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=1ed3985c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=1ed3985c&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserThemes.vue?vue&type=template&id=1ed3985c&scoped=true\"\nimport script from \"./UserThemes.vue?vue&type=script&lang=js\"\nexport * from \"./UserThemes.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserThemes.vue?vue&type=style&index=0&id=1ed3985c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ed3985c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('NcSettingsSection',{staticClass:\"theming\",attrs:{\"name\":_vm.t('theming', 'Appearance and accessibility settings'),\"limit-width\":false}},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.themes),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"enforced\":theme.id === _vm.enforceTheme,\"selected\":_vm.selectedTheme.id === theme.id,\"theme\":theme,\"unique\":_vm.themes.length === 1,\"type\":\"theme\"},on:{\"change\":_vm.changeTheme}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.fonts),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"selected\":theme.enabled,\"theme\":theme,\"unique\":_vm.fonts.length === 1,\"type\":\"font\"},on:{\"change\":_vm.changeFont}})}),1),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('theming', 'Misc accessibility options')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"checkbox\",\"checked\":_vm.enableBlurFilter === 'yes',\"indeterminate\":_vm.enableBlurFilter === ''},on:{\"update:checked\":_vm.changeEnableBlurFilter}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Enable blur background filter (may increase GPU load)'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcSettingsSection',{staticClass:\"background\",attrs:{\"name\":_vm.t('theming', 'Background'),\"data-user-theming-background-disabled\":\"\"}},[(_vm.isUserThemingDisabled)?[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Customization has been disabled by your administrator')))])]:[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Set a custom background')))]),_vm._v(\" \"),_c('BackgroundSettings',{staticClass:\"background__grid\",on:{\"update:background\":_vm.refreshGlobalStyles}})]],2),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Keyboard shortcuts')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.shortcutsDisabled,\"type\":\"switch\"},on:{\"update:checked\":function($event){_vm.shortcutsDisabled=$event},\"change\":_vm.changeShortcutsDisabled}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Disable all keyboard shortcuts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('UserAppMenuSection')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getRequestToken } from '@nextcloud/auth'\nimport Vue from 'vue'\n\nimport { refreshStyles } from './helpers/refreshStyles.js'\nimport App from './UserThemes.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#theming')\ntheming.$on('update:background', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.theming p[data-v-1ed3985c]{max-width:800px}.theming[data-v-1ed3985c] a{font-weight:bold}.theming[data-v-1ed3985c] a:hover,.theming[data-v-1ed3985c] a:focus{text-decoration:underline}.theming__preview-list[data-v-1ed3985c]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-1ed3985c]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-1ed3985c]{display:flex;flex-direction:column}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/UserThemes.vue\"],\"names\":[],\"mappings\":\"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA\",\"sourcesContent\":[\"\\n.theming {\\n\\t// Limit width of settings sections for readability\\n\\tp {\\n\\t\\tmax-width: 800px;\\n\\t}\\n\\n\\t// Proper highlight for links and focus feedback\\n\\t&::v-deep a {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview-list {\\n\\t\\t--gap: 30px;\\n\\n\\t\\tdisplay: grid;\\n\\t\\tmargin-top: var(--gap);\\n\\t\\tcolumn-gap: var(--gap);\\n\\t\\trow-gap: var(--gap);\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n}\\n\\n.background {\\n\\t&__grid {\\n\\t\\tmargin-top: 30px;\\n\\t}\\n}\\n\\n@media (max-width: 1440px) {\\n\\t.theming__preview-list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector[data-v-35797e31]{width:max-content;min-width:260px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelector.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,iBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.order-selector {\\n\\twidth: max-content;\\n\\tmin-width: 260px; // align with NcSelect\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelectorElement.vue\"],\"names\":[],\"mappings\":\"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA\",\"sourcesContent\":[\"\\n.order-selector-element {\\n\\t// hide default styling\\n\\tlist-style: none;\\n\\t// Align children\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\t// Spacing\\n\\tgap: 12px;\\n\\tpadding-inline: 12px;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&--disabled {\\n\\t\\tborder-color: var(--color-text-maxcontrast);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t.order-selector-element__icon {\\n\\t\\t\\topacity: 75%;\\n\\t\\t}\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tflex: 0 0;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tgap: 6px;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tflex: 1 1;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t&__placeholder {\\n\\t\\theight: 44px;\\n\\t\\twidth: 44px;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tfilter: var(--background-invert-if-bright);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.background-selector[data-v-1175e65a]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background-color[data-v-1175e65a]{display:flex;justify-content:center;align-items:center;width:176px;height:96px;margin:8px;border-radius:var(--border-radius-large);background-color:var(--color-primary)}.background-selector .background[data-v-1175e65a]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-1175e65a]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-1175e65a]{background-color:var(--color-primary-default);background-image:linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)),var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-1175e65a],.background-selector .background__default[data-v-1175e65a],.background-selector .background__color[data-v-1175e65a]{border-color:var(--color-border)}.background-selector .background__default[data-v-1175e65a],.background-selector .background__shipped[data-v-1175e65a]{color:#fff}.background-selector .background[data-color-bright][data-v-1175e65a]{color:#000}.background-selector .background--active[data-v-1175e65a],.background-selector .background[data-v-1175e65a]:hover,.background-selector .background[data-v-1175e65a]:focus{outline:2px solid var(--color-main-text) !important;border-color:var(--color-main-background) !important}.background-selector .background span[data-v-1175e65a]{margin:4px}.background-selector .background .check-icon[data-v-1175e65a]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-1175e65a]{display:block !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,wDACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,wCAAA,CACA,qCAAA,CAGD,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,wJAAA,CAGD,kLACC,gCAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAGC,mDAAA,CACA,oDAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA\",\"sourcesContent\":[\"\\n.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background-color {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.background {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\ttext-align: center;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: cover;\\n\\n\\t\\t&__filepicker {\\n\\t\\t\\t&.background--active {\\n\\t\\t\\t\\tcolor: white;\\n\\t\\t\\t\\tbackground-image: var(--image-background);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__default {\\n\\t\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\t\\tbackground-image: linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)), var(--image-background-plain, var(--image-background-default));\\n\\t\\t}\\n\\n\\t\\t&__filepicker, &__default, &__color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t// Over a background image\\n\\t\\t&__default,\\n\\t\\t&__shipped {\\n\\t\\t\\tcolor: white;\\n\\t\\t}\\n\\n\\t\\t// Text and svg icon dark on bright background\\n\\t\\t&[data-color-bright] {\\n\\t\\t\\tcolor: black;\\n\\t\\t}\\n\\n\\t\\t&--active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\tborder-color: var(--color-main-background) !important;\\n\\t\\t}\\n\\n\\t\\t// Icon\\n\\t\\tspan {\\n\\t\\t\\tmargin: 4px;\\n\\t\\t}\\n\\n\\t\\t.check-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t&--active:not(.icon-loading) {\\n\\t\\t\\t.check-icon {\\n\\t\\t\\t\\t// Show checkmark\\n\\t\\t\\t\\tdisplay: block !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.theming__preview[data-v-1a08e35a]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-1a08e35a],.theming__preview *[data-v-1a08e35a]{user-select:none}.theming__preview-image[data-v-1a08e35a]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-explanation[data-v-1a08e35a]{margin-bottom:10px}.theming__preview-description[data-v-1a08e35a]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-1a08e35a]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-1a08e35a]{padding:12px 0}.theming__preview--default[data-v-1a08e35a]{grid-column:span 2}.theming__preview-warning[data-v-1a08e35a]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-1a08e35a]{flex-direction:column}.theming__preview-image[data-v-1a08e35a]{margin:0}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/ItemPreview.vue\"],\"names\":[],\"mappings\":\"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,kBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA\",\"sourcesContent\":[\"\\n@use 'sass:math';\\n\\n.theming__preview {\\n\\t// We make previews on 16/10 screens\\n\\t--ratio: 16;\\n\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: flex-start;\\n\\tmax-width: 800px;\\n\\n\\t&,\\n\\t* {\\n\\t\\tuser-select: none;\\n\\t}\\n\\n\\t&-image {\\n\\t\\tflex-basis: calc(16px * var(--ratio));\\n\\t\\tflex-shrink: 0;\\n\\t\\theight: calc(10px * var(--ratio));\\n\\t\\tmargin-right: var(--gap);\\n\\t\\tcursor: pointer;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: top left;\\n\\t\\tbackground-size: cover;\\n\\t}\\n\\n\\t&-explanation {\\n\\t\\tmargin-bottom: 10px;\\n\\t}\\n\\n\\t&-description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\th3 {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\n\\t\\tlabel {\\n\\t\\t\\tpadding: 12px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--default {\\n\\t\\tgrid-column: span 2;\\n\\t}\\n\\n\\t&-warning {\\n\\t\\tcolor: var(--color-warning);\\n\\t}\\n}\\n\\n@media (max-width: math.div(1024px, 1.5)) {\\n\\t.theming__preview {\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&-image {\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-app-menu-order[data-v-ee0f3d1a]{margin-block:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/UserAppMenuSection.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,iBAAA\",\"sourcesContent\":[\"\\n.user-app-menu-order {\\n\\tmargin-block: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar vibrant_1 = __importDefault(require(\"./vibrant\"));\nvar browser_1 = __importDefault(require(\"./image/browser\"));\nvibrant_1.default.DefaultOpts.ImageClass = browser_1.default;\nmodule.exports = vibrant_1.default;\n//# sourceMappingURL=browser.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vibrant_1 = __importDefault(require(\"./vibrant\"));\nvar clone = require(\"lodash/clone\");\nvar Builder = /** @class */ (function () {\n function Builder(src, opts) {\n if (opts === void 0) { opts = {}; }\n this._src = src;\n this._opts = opts;\n this._opts.filters = clone(vibrant_1.default.DefaultOpts.filters);\n }\n Builder.prototype.maxColorCount = function (n) {\n this._opts.colorCount = n;\n return this;\n };\n Builder.prototype.maxDimension = function (d) {\n this._opts.maxDimension = d;\n return this;\n };\n Builder.prototype.addFilter = function (f) {\n this._opts.filters.push(f);\n return this;\n };\n Builder.prototype.removeFilter = function (f) {\n var i = this._opts.filters.indexOf(f);\n if (i > 0)\n this._opts.filters.splice(i);\n return this;\n };\n Builder.prototype.clearFilters = function () {\n this._opts.filters = [];\n return this;\n };\n Builder.prototype.quality = function (q) {\n this._opts.quality = q;\n return this;\n };\n Builder.prototype.useImageClass = function (imageClass) {\n this._opts.ImageClass = imageClass;\n return this;\n };\n Builder.prototype.useGenerator = function (generator) {\n this._opts.generator = generator;\n return this;\n };\n Builder.prototype.useQuantizer = function (quantizer) {\n this._opts.quantizer = quantizer;\n return this;\n };\n Builder.prototype.build = function () {\n return new vibrant_1.default(this._src, this._opts);\n };\n Builder.prototype.getPalette = function (cb) {\n return this.build().getPalette(cb);\n };\n Builder.prototype.getSwatches = function (cb) {\n return this.build().getPalette(cb);\n };\n return Builder;\n}());\nexports.default = Builder;\n//# sourceMappingURL=builder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Swatch = void 0;\nvar util_1 = require(\"./util\");\nvar filter = require(\"lodash/filter\");\nvar Swatch = /** @class */ (function () {\n function Swatch(rgb, population) {\n this._rgb = rgb;\n this._population = population;\n }\n Swatch.applyFilter = function (colors, f) {\n return typeof f === 'function'\n ? filter(colors, function (_a) {\n var r = _a.r, g = _a.g, b = _a.b;\n return f(r, g, b, 255);\n })\n : colors;\n };\n Object.defineProperty(Swatch.prototype, \"r\", {\n get: function () { return this._rgb[0]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"g\", {\n get: function () { return this._rgb[1]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"b\", {\n get: function () { return this._rgb[2]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"rgb\", {\n get: function () { return this._rgb; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"hsl\", {\n get: function () {\n if (!this._hsl) {\n var _a = this._rgb, r = _a[0], g = _a[1], b = _a[2];\n this._hsl = util_1.rgbToHsl(r, g, b);\n }\n return this._hsl;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"hex\", {\n get: function () {\n if (!this._hex) {\n var _a = this._rgb, r = _a[0], g = _a[1], b = _a[2];\n this._hex = util_1.rgbToHex(r, g, b);\n }\n return this._hex;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"population\", {\n get: function () { return this._population; },\n enumerable: false,\n configurable: true\n });\n Swatch.prototype.toJSON = function () {\n return {\n rgb: this.rgb,\n population: this.population\n };\n };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getRgb = function () { return this._rgb; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getHsl = function () { return this.hsl; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getPopulation = function () { return this._population; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getHex = function () { return this.hex; };\n Swatch.prototype.getYiq = function () {\n if (!this._yiq) {\n var rgb = this._rgb;\n this._yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n }\n return this._yiq;\n };\n Object.defineProperty(Swatch.prototype, \"titleTextColor\", {\n get: function () {\n if (!this._titleTextColor) {\n this._titleTextColor = this.getYiq() < 200 ? '#fff' : '#000';\n }\n return this._titleTextColor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"bodyTextColor\", {\n get: function () {\n if (!this._bodyTextColor) {\n this._bodyTextColor = this.getYiq() < 150 ? '#fff' : '#000';\n }\n return this._bodyTextColor;\n },\n enumerable: false,\n configurable: true\n });\n Swatch.prototype.getTitleTextColor = function () {\n return this.titleTextColor;\n };\n Swatch.prototype.getBodyTextColor = function () {\n return this.bodyTextColor;\n };\n return Swatch;\n}());\nexports.Swatch = Swatch;\n//# sourceMappingURL=color.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction defaultFilter(r, g, b, a) {\n return a >= 125 &&\n !(r > 250 && g > 250 && b > 250);\n}\nexports.default = defaultFilter;\n//# sourceMappingURL=default.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineFilters = void 0;\nvar default_1 = require(\"./default\");\nObject.defineProperty(exports, \"Default\", { enumerable: true, get: function () { return default_1.default; } });\nfunction combineFilters(filters) {\n // TODO: caching\n if (!Array.isArray(filters) || filters.length === 0)\n return null;\n return function (r, g, b, a) {\n if (a === 0)\n return false;\n for (var i = 0; i < filters.length; i++) {\n if (!filters[i](r, g, b, a))\n return false;\n }\n return true;\n };\n}\nexports.combineFilters = combineFilters;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar util_1 = require(\"../util\");\nvar defaults = require(\"lodash/defaults\");\nvar DefaultOpts = {\n targetDarkLuma: 0.26,\n maxDarkLuma: 0.45,\n minLightLuma: 0.55,\n targetLightLuma: 0.74,\n minNormalLuma: 0.3,\n targetNormalLuma: 0.5,\n maxNormalLuma: 0.7,\n targetMutesSaturation: 0.3,\n maxMutesSaturation: 0.4,\n targetVibrantSaturation: 1.0,\n minVibrantSaturation: 0.35,\n weightSaturation: 3,\n weightLuma: 6.5,\n weightPopulation: 0.5\n};\nfunction _findMaxPopulation(swatches) {\n var p = 0;\n swatches.forEach(function (s) {\n p = Math.max(p, s.getPopulation());\n });\n return p;\n}\nfunction _isAlreadySelected(palette, s) {\n return palette.Vibrant === s ||\n palette.DarkVibrant === s ||\n palette.LightVibrant === s ||\n palette.Muted === s ||\n palette.DarkMuted === s ||\n palette.LightMuted === s;\n}\nfunction _createComparisonValue(saturation, targetSaturation, luma, targetLuma, population, maxPopulation, opts) {\n function weightedMean() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var sum = 0;\n var weightSum = 0;\n for (var i = 0; i < values.length; i += 2) {\n var value = values[i];\n var weight = values[i + 1];\n sum += value * weight;\n weightSum += weight;\n }\n return sum / weightSum;\n }\n function invertDiff(value, targetValue) {\n return 1 - Math.abs(value - targetValue);\n }\n return weightedMean(invertDiff(saturation, targetSaturation), opts.weightSaturation, invertDiff(luma, targetLuma), opts.weightLuma, population / maxPopulation, opts.weightPopulation);\n}\nfunction _findColorVariation(palette, swatches, maxPopulation, targetLuma, minLuma, maxLuma, targetSaturation, minSaturation, maxSaturation, opts) {\n var max = null;\n var maxValue = 0;\n swatches.forEach(function (swatch) {\n var _a = swatch.getHsl(), s = _a[1], l = _a[2];\n if (s >= minSaturation && s <= maxSaturation &&\n l >= minLuma && l <= maxLuma &&\n !_isAlreadySelected(palette, swatch)) {\n var value = _createComparisonValue(s, targetSaturation, l, targetLuma, swatch.getPopulation(), maxPopulation, opts);\n if (max === null || value > maxValue) {\n max = swatch;\n maxValue = value;\n }\n }\n });\n return max;\n}\nfunction _generateVariationColors(swatches, maxPopulation, opts) {\n var palette = {};\n // mVibrantSwatch = findColor(TARGET_NORMAL_LUMA, MIN_NORMAL_LUMA, MAX_NORMAL_LUMA,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.Vibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetNormalLuma, opts.minNormalLuma, opts.maxNormalLuma, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mLightVibrantSwatch = findColor(TARGET_LIGHT_LUMA, MIN_LIGHT_LUMA, 1f,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.LightVibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetLightLuma, opts.minLightLuma, 1, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mDarkVibrantSwatch = findColor(TARGET_DARK_LUMA, 0f, MAX_DARK_LUMA,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.DarkVibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetDarkLuma, 0, opts.maxDarkLuma, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mMutedSwatch = findColor(TARGET_NORMAL_LUMA, MIN_NORMAL_LUMA, MAX_NORMAL_LUMA,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.Muted = _findColorVariation(palette, swatches, maxPopulation, opts.targetNormalLuma, opts.minNormalLuma, opts.maxNormalLuma, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n // mLightMutedColor = findColor(TARGET_LIGHT_LUMA, MIN_LIGHT_LUMA, 1f,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.LightMuted = _findColorVariation(palette, swatches, maxPopulation, opts.targetLightLuma, opts.minLightLuma, 1, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n // mDarkMutedSwatch = findColor(TARGET_DARK_LUMA, 0f, MAX_DARK_LUMA,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.DarkMuted = _findColorVariation(palette, swatches, maxPopulation, opts.targetDarkLuma, 0, opts.maxDarkLuma, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n return palette;\n}\nfunction _generateEmptySwatches(palette, maxPopulation, opts) {\n if (palette.Vibrant === null && palette.DarkVibrant === null && palette.LightVibrant === null) {\n if (palette.DarkVibrant === null && palette.DarkMuted !== null) {\n var _a = palette.DarkMuted.getHsl(), h = _a[0], s = _a[1], l = _a[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightVibrant === null && palette.LightMuted !== null) {\n var _b = palette.LightMuted.getHsl(), h = _b[0], s = _b[1], l = _b[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n }\n if (palette.Vibrant === null && palette.DarkVibrant !== null) {\n var _c = palette.DarkVibrant.getHsl(), h = _c[0], s = _c[1], l = _c[2];\n l = opts.targetNormalLuma;\n palette.Vibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n else if (palette.Vibrant === null && palette.LightVibrant !== null) {\n var _d = palette.LightVibrant.getHsl(), h = _d[0], s = _d[1], l = _d[2];\n l = opts.targetNormalLuma;\n palette.Vibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.DarkVibrant === null && palette.Vibrant !== null) {\n var _e = palette.Vibrant.getHsl(), h = _e[0], s = _e[1], l = _e[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightVibrant === null && palette.Vibrant !== null) {\n var _f = palette.Vibrant.getHsl(), h = _f[0], s = _f[1], l = _f[2];\n l = opts.targetLightLuma;\n palette.LightVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.Muted === null && palette.Vibrant !== null) {\n var _g = palette.Vibrant.getHsl(), h = _g[0], s = _g[1], l = _g[2];\n l = opts.targetMutesSaturation;\n palette.Muted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.DarkMuted === null && palette.DarkVibrant !== null) {\n var _h = palette.DarkVibrant.getHsl(), h = _h[0], s = _h[1], l = _h[2];\n l = opts.targetMutesSaturation;\n palette.DarkMuted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightMuted === null && palette.LightVibrant !== null) {\n var _j = palette.LightVibrant.getHsl(), h = _j[0], s = _j[1], l = _j[2];\n l = opts.targetMutesSaturation;\n palette.LightMuted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n}\nvar DefaultGenerator = function (swatches, opts) {\n opts = defaults({}, opts, DefaultOpts);\n var maxPopulation = _findMaxPopulation(swatches);\n var palette = _generateVariationColors(swatches, maxPopulation, opts);\n _generateEmptySwatches(palette, maxPopulation, opts);\n return palette;\n};\nexports.default = DefaultGenerator;\n//# sourceMappingURL=default.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar default_1 = require(\"./default\");\nObject.defineProperty(exports, \"Default\", { enumerable: true, get: function () { return default_1.default; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImageBase = void 0;\nvar ImageBase = /** @class */ (function () {\n function ImageBase() {\n }\n ImageBase.prototype.scaleDown = function (opts) {\n var width = this.getWidth();\n var height = this.getHeight();\n var ratio = 1;\n if (opts.maxDimension > 0) {\n var maxSide = Math.max(width, height);\n if (maxSide > opts.maxDimension)\n ratio = opts.maxDimension / maxSide;\n }\n else {\n ratio = 1 / opts.quality;\n }\n if (ratio < 1)\n this.resize(width * ratio, height * ratio, ratio);\n };\n ImageBase.prototype.applyFilter = function (filter) {\n var imageData = this.getImageData();\n if (typeof filter === 'function') {\n var pixels = imageData.data;\n var n = pixels.length / 4;\n var offset = void 0, r = void 0, g = void 0, b = void 0, a = void 0;\n for (var i = 0; i < n; i++) {\n offset = i * 4;\n r = pixels[offset + 0];\n g = pixels[offset + 1];\n b = pixels[offset + 2];\n a = pixels[offset + 3];\n // Mark ignored color\n if (!filter(r, g, b, a))\n pixels[offset + 3] = 0;\n }\n }\n return Promise.resolve(imageData);\n };\n return ImageBase;\n}());\nexports.ImageBase = ImageBase;\n//# sourceMappingURL=base.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar base_1 = require(\"./base\");\nvar Url = __importStar(require(\"url\"));\nfunction isRelativeUrl(url) {\n var u = Url.parse(url);\n return u.protocol === null &&\n u.host === null &&\n u.port === null;\n}\nfunction isSameOrigin(a, b) {\n var ua = Url.parse(a);\n var ub = Url.parse(b);\n // https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy\n return ua.protocol === ub.protocol &&\n ua.hostname === ub.hostname &&\n ua.port === ub.port;\n}\nvar BrowserImage = /** @class */ (function (_super) {\n __extends(BrowserImage, _super);\n function BrowserImage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BrowserImage.prototype._initCanvas = function () {\n var img = this.image;\n var canvas = this._canvas = document.createElement('canvas');\n var context = this._context = canvas.getContext('2d');\n canvas.className = 'vibrant-canvas';\n canvas.style.display = 'none';\n this._width = canvas.width = img.width;\n this._height = canvas.height = img.height;\n context.drawImage(img, 0, 0);\n document.body.appendChild(canvas);\n };\n BrowserImage.prototype.load = function (image) {\n var _this = this;\n var img = null;\n var src = null;\n if (typeof image === 'string') {\n img = document.createElement('img');\n if (!isRelativeUrl(image) && !isSameOrigin(window.location.href, image)) {\n img.crossOrigin = 'anonymous';\n }\n src = img.src = image;\n }\n else if (image instanceof HTMLImageElement) {\n img = image;\n src = image.src;\n }\n else {\n return Promise.reject(new Error(\"Cannot load buffer as an image in browser\"));\n }\n this.image = img;\n return new Promise(function (resolve, reject) {\n var onImageLoad = function () {\n _this._initCanvas();\n resolve(_this);\n };\n if (img.complete) {\n // Already loaded\n onImageLoad();\n }\n else {\n img.onload = onImageLoad;\n img.onerror = function (e) { return reject(new Error(\"Fail to load image: \" + src)); };\n }\n });\n };\n BrowserImage.prototype.clear = function () {\n this._context.clearRect(0, 0, this._width, this._height);\n };\n BrowserImage.prototype.update = function (imageData) {\n this._context.putImageData(imageData, 0, 0);\n };\n BrowserImage.prototype.getWidth = function () {\n return this._width;\n };\n BrowserImage.prototype.getHeight = function () {\n return this._height;\n };\n BrowserImage.prototype.resize = function (targetWidth, targetHeight, ratio) {\n var _a = this, canvas = _a._canvas, context = _a._context, img = _a.image;\n this._width = canvas.width = targetWidth;\n this._height = canvas.height = targetHeight;\n context.scale(ratio, ratio);\n context.drawImage(img, 0, 0);\n };\n BrowserImage.prototype.getPixelCount = function () {\n return this._width * this._height;\n };\n BrowserImage.prototype.getImageData = function () {\n return this._context.getImageData(0, 0, this._width, this._height);\n };\n BrowserImage.prototype.remove = function () {\n if (this._canvas && this._canvas.parentNode) {\n this._canvas.parentNode.removeChild(this._canvas);\n }\n };\n return BrowserImage;\n}(base_1.ImageBase));\nexports.default = BrowserImage;\n//# sourceMappingURL=browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebWorker = void 0;\nvar mmcq_1 = require(\"./mmcq\");\nObject.defineProperty(exports, \"MMCQ\", { enumerable: true, get: function () { return mmcq_1.default; } });\nexports.WebWorker = null;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar vbox_1 = __importDefault(require(\"./vbox\"));\nvar pqueue_1 = __importDefault(require(\"./pqueue\"));\nvar fractByPopulations = 0.75;\nfunction _splitBoxes(pq, target) {\n var lastSize = pq.size();\n while (pq.size() < target) {\n var vbox = pq.pop();\n if (vbox && vbox.count() > 0) {\n var _a = vbox.split(), vbox1 = _a[0], vbox2 = _a[1];\n pq.push(vbox1);\n if (vbox2 && vbox2.count() > 0)\n pq.push(vbox2);\n // No more new boxes, converged\n if (pq.size() === lastSize) {\n break;\n }\n else {\n lastSize = pq.size();\n }\n }\n else {\n break;\n }\n }\n}\nvar MMCQ = function (pixels, opts) {\n if (pixels.length === 0 || opts.colorCount < 2 || opts.colorCount > 256) {\n throw new Error('Wrong MMCQ parameters');\n }\n var vbox = vbox_1.default.build(pixels);\n var hist = vbox.hist;\n var colorCount = Object.keys(hist).length;\n var pq = new pqueue_1.default(function (a, b) { return a.count() - b.count(); });\n pq.push(vbox);\n // first set of colors, sorted by population\n _splitBoxes(pq, fractByPopulations * opts.colorCount);\n // Re-order\n var pq2 = new pqueue_1.default(function (a, b) { return a.count() * a.volume() - b.count() * b.volume(); });\n pq2.contents = pq.contents;\n // next set - generate the median cuts using the (npix * vol) sorting.\n _splitBoxes(pq2, opts.colorCount - pq2.size());\n // calculate the actual colors\n return generateSwatches(pq2);\n};\nfunction generateSwatches(pq) {\n var swatches = [];\n while (pq.size()) {\n var v = pq.pop();\n var color = v.avg();\n var r = color[0], g = color[1], b = color[2];\n swatches.push(new color_1.Swatch(color, v.count()));\n }\n return swatches;\n}\nexports.default = MMCQ;\n//# sourceMappingURL=mmcq.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PQueue = /** @class */ (function () {\n function PQueue(comparator) {\n this._comparator = comparator;\n this.contents = [];\n this._sorted = false;\n }\n PQueue.prototype._sort = function () {\n if (!this._sorted) {\n this.contents.sort(this._comparator);\n this._sorted = true;\n }\n };\n PQueue.prototype.push = function (item) {\n this.contents.push(item);\n this._sorted = false;\n };\n PQueue.prototype.peek = function (index) {\n this._sort();\n index = typeof index === 'number' ? index : this.contents.length - 1;\n return this.contents[index];\n };\n PQueue.prototype.pop = function () {\n this._sort();\n return this.contents.pop();\n };\n PQueue.prototype.size = function () {\n return this.contents.length;\n };\n PQueue.prototype.map = function (mapper) {\n this._sort();\n return this.contents.map(mapper);\n };\n return PQueue;\n}());\nexports.default = PQueue;\n//# sourceMappingURL=pqueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util\");\nvar VBox = /** @class */ (function () {\n function VBox(r1, r2, g1, g2, b1, b2, hist) {\n this._volume = -1;\n this._count = -1;\n this.dimension = { r1: r1, r2: r2, g1: g1, g2: g2, b1: b1, b2: b2 };\n this.hist = hist;\n }\n VBox.build = function (pixels, shouldIgnore) {\n var hn = 1 << (3 * util_1.SIGBITS);\n var hist = new Uint32Array(hn);\n var rmax;\n var rmin;\n var gmax;\n var gmin;\n var bmax;\n var bmin;\n var r;\n var g;\n var b;\n var a;\n rmax = gmax = bmax = 0;\n rmin = gmin = bmin = Number.MAX_VALUE;\n var n = pixels.length / 4;\n var i = 0;\n while (i < n) {\n var offset = i * 4;\n i++;\n r = pixels[offset + 0];\n g = pixels[offset + 1];\n b = pixels[offset + 2];\n a = pixels[offset + 3];\n // Ignored pixels' alpha is marked as 0 in filtering stage\n if (a === 0)\n continue;\n r = r >> util_1.RSHIFT;\n g = g >> util_1.RSHIFT;\n b = b >> util_1.RSHIFT;\n var index = util_1.getColorIndex(r, g, b);\n hist[index] += 1;\n if (r > rmax)\n rmax = r;\n if (r < rmin)\n rmin = r;\n if (g > gmax)\n gmax = g;\n if (g < gmin)\n gmin = g;\n if (b > bmax)\n bmax = b;\n if (b < bmin)\n bmin = b;\n }\n return new VBox(rmin, rmax, gmin, gmax, bmin, bmax, hist);\n };\n VBox.prototype.invalidate = function () {\n this._volume = this._count = -1;\n this._avg = null;\n };\n VBox.prototype.volume = function () {\n if (this._volume < 0) {\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n this._volume = (r2 - r1 + 1) * (g2 - g1 + 1) * (b2 - b1 + 1);\n }\n return this._volume;\n };\n VBox.prototype.count = function () {\n if (this._count < 0) {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var c = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n c += hist[index];\n }\n }\n }\n this._count = c;\n }\n return this._count;\n };\n VBox.prototype.clone = function () {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n return new VBox(r1, r2, g1, g2, b1, b2, hist);\n };\n VBox.prototype.avg = function () {\n if (!this._avg) {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var ntot = 0;\n var mult = 1 << (8 - util_1.SIGBITS);\n var rsum = void 0;\n var gsum = void 0;\n var bsum = void 0;\n rsum = gsum = bsum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n var h = hist[index];\n ntot += h;\n rsum += (h * (r + 0.5) * mult);\n gsum += (h * (g + 0.5) * mult);\n bsum += (h * (b + 0.5) * mult);\n }\n }\n }\n if (ntot) {\n this._avg = [\n ~~(rsum / ntot),\n ~~(gsum / ntot),\n ~~(bsum / ntot)\n ];\n }\n else {\n this._avg = [\n ~~(mult * (r1 + r2 + 1) / 2),\n ~~(mult * (g1 + g2 + 1) / 2),\n ~~(mult * (b1 + b2 + 1) / 2)\n ];\n }\n }\n return this._avg;\n };\n VBox.prototype.contains = function (rgb) {\n var r = rgb[0], g = rgb[1], b = rgb[2];\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n r >>= util_1.RSHIFT;\n g >>= util_1.RSHIFT;\n b >>= util_1.RSHIFT;\n return r >= r1 && r <= r2 &&\n g >= g1 && g <= g2 &&\n b >= b1 && b <= b2;\n };\n VBox.prototype.split = function () {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var count = this.count();\n if (!count)\n return [];\n if (count === 1)\n return [this.clone()];\n var rw = r2 - r1 + 1;\n var gw = g2 - g1 + 1;\n var bw = b2 - b1 + 1;\n var maxw = Math.max(rw, gw, bw);\n var accSum = null;\n var sum;\n var total;\n sum = total = 0;\n var maxd = null;\n if (maxw === rw) {\n maxd = 'r';\n accSum = new Uint32Array(r2 + 1);\n for (var r = r1; r <= r2; r++) {\n sum = 0;\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[r] = total;\n }\n }\n else if (maxw === gw) {\n maxd = 'g';\n accSum = new Uint32Array(g2 + 1);\n for (var g = g1; g <= g2; g++) {\n sum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[g] = total;\n }\n }\n else {\n maxd = 'b';\n accSum = new Uint32Array(b2 + 1);\n for (var b = b1; b <= b2; b++) {\n sum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[b] = total;\n }\n }\n var splitPoint = -1;\n var reverseSum = new Uint32Array(accSum.length);\n for (var i = 0; i < accSum.length; i++) {\n var d = accSum[i];\n if (splitPoint < 0 && d > total / 2)\n splitPoint = i;\n reverseSum[i] = total - d;\n }\n var vbox = this;\n function doCut(d) {\n var dim1 = d + '1';\n var dim2 = d + '2';\n var d1 = vbox.dimension[dim1];\n var d2 = vbox.dimension[dim2];\n var vbox1 = vbox.clone();\n var vbox2 = vbox.clone();\n var left = splitPoint - d1;\n var right = d2 - splitPoint;\n if (left <= right) {\n d2 = Math.min(d2 - 1, ~~(splitPoint + right / 2));\n d2 = Math.max(0, d2);\n }\n else {\n d2 = Math.max(d1, ~~(splitPoint - 1 - left / 2));\n d2 = Math.min(vbox.dimension[dim2], d2);\n }\n while (!accSum[d2])\n d2++;\n var c2 = reverseSum[d2];\n while (!c2 && accSum[d2 - 1])\n c2 = reverseSum[--d2];\n vbox1.dimension[dim2] = d2;\n vbox2.dimension[dim1] = d2 + 1;\n return [vbox1, vbox2];\n }\n return doCut(maxd);\n };\n return VBox;\n}());\nexports.default = VBox;\n//# sourceMappingURL=vbox.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getColorIndex = exports.getColorDiffStatus = exports.hexDiff = exports.rgbDiff = exports.deltaE94 = exports.rgbToCIELab = exports.xyzToCIELab = exports.rgbToXyz = exports.hslToRgb = exports.rgbToHsl = exports.rgbToHex = exports.hexToRgb = exports.defer = exports.RSHIFT = exports.SIGBITS = exports.DELTAE94_DIFF_STATUS = void 0;\nexports.DELTAE94_DIFF_STATUS = {\n NA: 0,\n PERFECT: 1,\n CLOSE: 2,\n GOOD: 10,\n SIMILAR: 50\n};\nexports.SIGBITS = 5;\nexports.RSHIFT = 8 - exports.SIGBITS;\nfunction defer() {\n var resolve;\n var reject;\n // eslint-disable-next-line promise/param-names\n var promise = new Promise(function (_resolve, _reject) {\n resolve = _resolve;\n reject = _reject;\n });\n // @ts-ignore\n return { resolve: resolve, reject: reject, promise: promise };\n}\nexports.defer = defer;\nfunction hexToRgb(hex) {\n var m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return m === null ? null : [m[1], m[2], m[3]].map(function (s) { return parseInt(s, 16); });\n}\nexports.hexToRgb = hexToRgb;\nfunction rgbToHex(r, g, b) {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1, 7);\n}\nexports.rgbToHex = rgbToHex;\nfunction rgbToHsl(r, g, b) {\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n // @ts-ignore\n h /= 6;\n }\n // @ts-ignore\n return [h, s, l];\n}\nexports.rgbToHsl = rgbToHsl;\nfunction hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n function hue2rgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - (l * s);\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - (1 / 3));\n }\n return [\n r * 255,\n g * 255,\n b * 255\n ];\n}\nexports.hslToRgb = hslToRgb;\nfunction rgbToXyz(r, g, b) {\n r /= 255;\n g /= 255;\n b /= 255;\n r = r > 0.04045 ? Math.pow((r + 0.005) / 1.055, 2.4) : r / 12.92;\n g = g > 0.04045 ? Math.pow((g + 0.005) / 1.055, 2.4) : g / 12.92;\n b = b > 0.04045 ? Math.pow((b + 0.005) / 1.055, 2.4) : b / 12.92;\n r *= 100;\n g *= 100;\n b *= 100;\n var x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n var y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n var z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n return [x, y, z];\n}\nexports.rgbToXyz = rgbToXyz;\nfunction xyzToCIELab(x, y, z) {\n var REF_X = 95.047;\n var REF_Y = 100;\n var REF_Z = 108.883;\n x /= REF_X;\n y /= REF_Y;\n z /= REF_Z;\n x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n var L = 116 * y - 16;\n var a = 500 * (x - y);\n var b = 200 * (y - z);\n return [L, a, b];\n}\nexports.xyzToCIELab = xyzToCIELab;\nfunction rgbToCIELab(r, g, b) {\n var _a = rgbToXyz(r, g, b), x = _a[0], y = _a[1], z = _a[2];\n return xyzToCIELab(x, y, z);\n}\nexports.rgbToCIELab = rgbToCIELab;\nfunction deltaE94(lab1, lab2) {\n var WEIGHT_L = 1;\n var WEIGHT_C = 1;\n var WEIGHT_H = 1;\n var L1 = lab1[0], a1 = lab1[1], b1 = lab1[2];\n var L2 = lab2[0], a2 = lab2[1], b2 = lab2[2];\n var dL = L1 - L2;\n var da = a1 - a2;\n var db = b1 - b2;\n var xC1 = Math.sqrt(a1 * a1 + b1 * b1);\n var xC2 = Math.sqrt(a2 * a2 + b2 * b2);\n var xDL = L2 - L1;\n var xDC = xC2 - xC1;\n var xDE = Math.sqrt(dL * dL + da * da + db * db);\n var xDH = (Math.sqrt(xDE) > Math.sqrt(Math.abs(xDL)) + Math.sqrt(Math.abs(xDC)))\n ? Math.sqrt(xDE * xDE - xDL * xDL - xDC * xDC)\n : 0;\n var xSC = 1 + 0.045 * xC1;\n var xSH = 1 + 0.015 * xC1;\n xDL /= WEIGHT_L;\n xDC /= WEIGHT_C * xSC;\n xDH /= WEIGHT_H * xSH;\n return Math.sqrt(xDL * xDL + xDC * xDC + xDH * xDH);\n}\nexports.deltaE94 = deltaE94;\nfunction rgbDiff(rgb1, rgb2) {\n var lab1 = rgbToCIELab.apply(undefined, rgb1);\n var lab2 = rgbToCIELab.apply(undefined, rgb2);\n return deltaE94(lab1, lab2);\n}\nexports.rgbDiff = rgbDiff;\nfunction hexDiff(hex1, hex2) {\n var rgb1 = hexToRgb(hex1);\n var rgb2 = hexToRgb(hex2);\n return rgbDiff(rgb1, rgb2);\n}\nexports.hexDiff = hexDiff;\nfunction getColorDiffStatus(d) {\n if (d < exports.DELTAE94_DIFF_STATUS.NA) {\n return 'N/A';\n }\n // Not perceptible by human eyes\n if (d <= exports.DELTAE94_DIFF_STATUS.PERFECT) {\n return 'Perfect';\n }\n // Perceptible through close observation\n if (d <= exports.DELTAE94_DIFF_STATUS.CLOSE) {\n return 'Close';\n }\n // Perceptible at a glance\n if (d <= exports.DELTAE94_DIFF_STATUS.GOOD) {\n return 'Good';\n }\n // Colors are more similar than opposite\n if (d < exports.DELTAE94_DIFF_STATUS.SIMILAR) {\n return 'Similar';\n }\n return 'Wrong';\n}\nexports.getColorDiffStatus = getColorDiffStatus;\nfunction getColorIndex(r, g, b) {\n return (r << (2 * exports.SIGBITS)) + (g << exports.SIGBITS) + b;\n}\nexports.getColorIndex = getColorIndex;\n//# sourceMappingURL=util.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"./color\");\nvar builder_1 = __importDefault(require(\"./builder\"));\nvar Util = __importStar(require(\"./util\"));\nvar Quantizer = __importStar(require(\"./quantizer\"));\nvar Generator = __importStar(require(\"./generator\"));\nvar Filters = __importStar(require(\"./filter\"));\nvar defaults = require(\"lodash/defaults\");\nvar Vibrant = /** @class */ (function () {\n function Vibrant(_src, opts) {\n this._src = _src;\n this.opts = defaults({}, opts, Vibrant.DefaultOpts);\n this.opts.combinedFilter = Filters.combineFilters(this.opts.filters);\n }\n Vibrant.from = function (src) {\n return new builder_1.default(src);\n };\n Vibrant.prototype._process = function (image, opts) {\n var quantizer = opts.quantizer, generator = opts.generator;\n image.scaleDown(opts);\n return image.applyFilter(opts.combinedFilter)\n .then(function (imageData) { return quantizer(imageData.data, opts); })\n .then(function (colors) { return color_1.Swatch.applyFilter(colors, opts.combinedFilter); })\n .then(function (colors) { return Promise.resolve(generator(colors)); });\n };\n Vibrant.prototype.palette = function () {\n return this.swatches();\n };\n Vibrant.prototype.swatches = function () {\n return this._palette;\n };\n Vibrant.prototype.getPalette = function (cb) {\n var _this = this;\n var image = new this.opts.ImageClass();\n var result = image.load(this._src)\n .then(function (image) { return _this._process(image, _this.opts); })\n .then(function (palette) {\n _this._palette = palette;\n image.remove();\n return palette;\n }, function (err) {\n image.remove();\n throw err;\n });\n if (cb)\n result.then(function (palette) { return cb(null, palette); }, function (err) { return cb(err); });\n return result;\n };\n Vibrant.Builder = builder_1.default;\n Vibrant.Quantizer = Quantizer;\n Vibrant.Generator = Generator;\n Vibrant.Filter = Filters;\n Vibrant.Util = Util;\n Vibrant.Swatch = color_1.Swatch;\n Vibrant.DefaultOpts = {\n colorCount: 64,\n quality: 5,\n generator: Generator.Default,\n ImageClass: null,\n quantizer: Quantizer.MMCQ,\n filters: [Filters.Default]\n };\n return Vibrant;\n}());\nexports.default = Vibrant;\n//# sourceMappingURL=vibrant.js.map","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (obj === global) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode<typeof value>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap<object, unknown>} */ var $wm;\n\t/** @type {Map<object, unknown>} */ var $m;\n\t/** @type {import('.').RootNode<unknown>} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowEmptyArrays: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decodeDotInKeys: true,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n duplicates: 'combine',\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n var existing = has.call(obj, key);\n if (existing && options.duplicates === 'combine') {\n obj[key] = utils.combine(obj[key], val);\n } else if (!existing || options.duplicates === 'last') {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = options.allowEmptyArrays && leaf === '' ? [] : [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n var index = parseInt(decodedRoot, 10);\n if (!options.parseArrays && decodedRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== decodedRoot\n && String(index) === decodedRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (decodedRoot !== '__proto__') {\n obj[decodedRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n throw new TypeError('The duplicates option must be either combine, first, or last');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n duplicates: duplicates,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var encodedPrefix = encodeDotInKeys ? prefix.replace(/\\./g, '%2E') : prefix;\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjustedPrefix + '[]';\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n var arrayFormat;\n if (opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = defaults.arrayFormat;\n }\n\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.allowEmptyArrays,\n options.strictNullHandling,\n options.skipNulls,\n options.encodeDotInKeys,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode');\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\n * Characters that are never ever allowed in a hostname.\n * Note that any invalid chars are also handled, but these\n * are the ones that are *expected* to be seen, so we fast-path\n * them.\n */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n /*\n * Copy chrome, IE, opera backslash-handling behavior.\n * Back slashes before the query string get converted to forward slashes\n * See: https://code.google.com/p/chromium/issues/detail?id=25916\n */\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\n */\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n /*\n * figure out if it's got a host\n * user@server is *always* interpreted as a hostname, and url\n * resolution will treat //foo/bar as host=foo,path=bar because that's\n * how the browser resolves relative URLs.\n */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n /*\n * there's a hostname.\n * the first instance of /, ?, ;, or # ends the host.\n *\n * If there is an @ in the hostname, then non-host chars *are* allowed\n * to the left of the last @ sign, unless some host-ending character\n * comes *before* the @-sign.\n * URLs are obnoxious.\n *\n * ex:\n * http://a@b@c/ => user:a@b host:c\n * http://a@b?@c => user:a host:c path:/?@c\n */\n\n /*\n * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n * Review our test case against browsers more comprehensively.\n */\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n\n /*\n * at this point, either we have an explicit point where the\n * auth portion cannot go past, or the last @ char is the decider.\n */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n /*\n * we replace non-ASCII char with a temporary placeholder\n * we need this to make sure size of hostname is not\n * broken by replacing non-ASCII by nothing\n */\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n /*\n * IDNA Support: Returns a punycoded representation of \"domain\".\n * It only converts parts of the domain name that\n * have non-ASCII characters, i.e. it doesn't matter if\n * you call it with a domain that already is ASCII-only.\n */\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\n /*\n * First, make 100% sure that any \"autoEscape\" chars get\n * escaped, even if encodeURIComponent doesn't think they\n * need to be.\n */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n // to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n /*\n * ensure it's an object, and not a string url.\n * If it's an obj, this is a no-op.\n * this way, you can call url_format() on strings\n * to clean up potentially wonky urls.\n */\n if (typeof obj === 'string') { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query, {\n arrayFormat: 'repeat',\n addQueryPrefix: false\n });\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (typeof relative === 'string') {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.pathname = '/';\n result.path = result.pathname;\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n /*\n * if it's a known url protocol, then changing\n * the protocol does weird things\n * first, if it's not file:, then we MUST have a host,\n * and if there was a path\n * to begin with, then we MUST have a path.\n * if it is file:, then the host is dropped,\n * because that's known to be hostless.\n * anything else is assumed to be absolute.\n */\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())) { }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n /*\n * if the url is a non-slashed url, then relative\n * links like ../.. should be able\n * to crawl up to the hostname, as well. This is strange.\n * result.protocol has already been set by now.\n * Later on, put the first path part into the host field.\n */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\n result.pathname = null;\n // to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n /*\n * if a url ENDs in . or .., then it must get a trailing slash.\n * however, if it ends in anything else non-slashy,\n * then it must NOT get a trailing slash.\n */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n /*\n * strip single dots, resolve double dots to parent dir\n * if the path tries to go above the root, `up` ends up > 0\n */\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"4065\":\"f1139ec30708e44e1094\",\"4254\":\"96661b9f421b07ce7189\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6673;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t6673: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(34314)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","backgroundImage","loadState","shippedBackgroundList","themingDefaultBackground","defaultShippedBackground","prefixWithBaseUrl","url","generateFilePath","components","Check","Close","ImageEdit","NcButton","NcColorPicker","data","loading","Theming","computed","shippedBackgrounds","Object","keys","map","fileName","preview","details","filter","background","isGlobalBackgroundDeleted","isGlobalBackgroundDefault","isBackgroundDisabled","methods","invertTextColor","color","calculateLuma","red","green","blue","hexToRGB","hex","result","exec","parseInt","update","backgroundColor","setDefault","axios","post","generateUrl","setShipped","shipped","value","setFile","path","arguments","length","undefined","removeBackground","delete","pickColor","event","_event$target","_this$Theming","target","dataset","debouncePickColor","debounce","pickFile","getFilePickerBuilder","t","allowDirectories","setMimeTypeFilter","setMultiSelect","addButton","id","label","callback","nodes","_nodes$","applyFile","build","pick","trim","console","error","showError","response","_palette$DarkVibrant","fileUrl","generateRemoteUrl","getCurrentUser","uid","get","responseType","blobUrl","URL","createObjectURL","palette","getColorPaletteFromBlob","DarkVibrant","debug","Promise","resolve","reject","Vibrant","getPalette","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","class","style","defaultColor","model","$$v","$set","expression","_l","shippedBackground","key","primary_color","attribution","description","theming","NcCheckboxRadioSwitch","enforced","Boolean","selected","theme","required","unique","switchType","img","checked","set","enabled","onToggle","enableLabel","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperty","defineProperty","enumerable","configurable","writable","_extends","assign","i","source","hasOwnProperty","call","apply","_objectSpread","ownKeys","getOwnPropertySymbols","concat","sym","getOwnPropertyDescriptor","forEach","userAgent","pattern","window","navigator","match","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","el","fn","addEventListener","off","removeEventListener","matches","selector","substring","msMatchesSelector","webkitMatchesSelector","_","getParentOrHost","host","document","nodeType","parentNode","closest","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","replace","css","prop","val","defaultView","getComputedStyle","currentStyle","indexOf","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","find","tagName","list","getElementsByTagName","n","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","left","bottom","right","height","width","innerHeight","innerWidth","containerRect","elMatrix","scaleX","a","scaleY","d","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","currentChild","children","display","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","index","nodeName","toUpperCase","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","body","isRectEqual","rect1","rect2","Math","round","throttle","ms","args","setTimeout","scrollBy","x","y","Polymer","$","jQuery","Zepto","dom","cloneNode","expando","Date","getTime","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","push","pluginEvent","eventName","sortable","evt","_this","eventCanceled","cancel","eventNameGlobal","pluginName","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_ref","originalEvent","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","bind","dragEl","parentEl","ghostEl","rootEl","nextEl","lastDownEl","cloneEl","cloneHidden","dragStarted","moved","putSortable","activeSortable","active","oldIndex","oldDraggableIndex","newIndex","newDraggableIndex","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","targetEl","toEl","fromEl","extraEventProperties","onName","charAt","substr","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","from","item","pullMode","lastPutMode","allEventProperties","dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","split","touchingSideChild2","clear","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","join","originalGroup","checkPull","checkPut","put","revertClone","preventDefault","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","some","rect","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","toString","animationCallbackId","animationStates","sort","disabled","store","handle","test","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","animation","easing","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","captureAnimationState","slice","child","fromRect","thisAnimationDuration","childMatrix","f","e","addAnimationState","removeAnimationState","splice","arr","indexOfObject","animateAll","clearTimeout","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","max","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","offsetWidth","repaint","animated","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","str","src","href","sum","charCodeAt","_nextTick","_cancelNextTick","contains","_getDirection","touch","pointerType","originalTarget","shadowRoot","composedPath","root","inputs","idx","_saveInputCheckedState","button","isContentEditable","criteria","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","b","c","cssMatrix","appendChild","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","save","handleEvent","dropEffect","_globalDragOver","toArray","order","getAttribute","items","destroy","Array","querySelectorAll","removeAttribute","utils","is","extend","dst","nextTick","cancelNextTick","detectDirection","element","_len","_key","create","version","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","util","warn","defineComponent","IconArrowDown","IconArrowUp","ariaDescribedby","ariaDetails","app","isFirst","isLast","move:up","move:down","update:focus","setup","emit","buttonUp","ref","buttonDown","needsFocus","moveUp","moveDown","keepFocus","$el","focus","_vm$app$label","_setupProxy","icon","directives","rawName","scopedSlots","_u","proxy","AppOrderSelectorElement","Fragment","isArray","listElement","appList","newValue","renderCount","resetOptions","defaultOptions","onUpdate","_valueIsRef","array","moveArrayElement","start","querySelector","stop","useSortable","selectorElements","onUpdated","statusInfo","before","_props$value","statusInfoId","random","updateStatusInfo","position","total","_g","refInFor","AppOrderSelector","IconUndo","NcNoteCard","NcSettingsSection","userAppOrder","enforcedDefaultApp","initialAppOrder","values","hasCustomAppOrder","hasAppOrderChanged","appOrder","elementIdAppOrderChanged","elementIdEnforcedDefaultApp","ariaDetailsAppOrder","saveSetting","generateOcsUrl","appId","configKey","configValue","JSON","stringify","updateAppOrder","then","catch","resetAppOrder","headers","ocs","availableThemes","enforceTheme","shortcutsDisabled","enableBlurFilter","isUserThemingDisabled","ItemPreview","BackgroundSettings","UserAppMenuSection","themes","fonts","selectedTheme","guidelinesLink","descriptionDetail","issuetrackerLink","designteamLink","watch","newState","changeShortcutsDisabled","refreshGlobalStyles","head","searchParams","now","newTheme","onload","remove","append","updateBackground","changeTheme","updateBodyAttributes","selectItem","changeFont","font","method","changeEnableBlurFilter","enabledThemesIDs","enabledFontsIDs","toggleAttribute","setAttribute","themeId","OC","Notification","showTemporary","meta","message","domProps","__webpack_nonce__","btoa","getRequestToken","Vue","App","$mount","$on","refreshStyles","___CSS_LOADER_EXPORT___","module","baseForOwn","baseEach","createBaseEach","exports","collection","predicate","baseFor","object","iteratee","isArrayLike","eachFunc","fromRight","iterable","baseRest","eq","isIterateeCall","keysIn","objectProto","sources","guard","propsIndex","propsLength","arrayFilter","baseFilter","baseIteratee","__importDefault","mod","__esModule","vibrant_1","browser_1","DefaultOpts","ImageClass","Builder","opts","_src","_opts","filters","maxColorCount","colorCount","maxDimension","addFilter","removeFilter","clearFilters","quality","q","useImageClass","imageClass","useGenerator","generator","useQuantizer","quantizer","cb","getSwatches","Swatch","util_1","rgb","population","_rgb","_population","applyFilter","colors","_a","r","g","_hsl","rgbToHsl","_hex","rgbToHex","toJSON","getRgb","getHsl","hsl","getPopulation","getHex","getYiq","_yiq","_titleTextColor","_bodyTextColor","getTitleTextColor","titleTextColor","getBodyTextColor","bodyTextColor","combineFilters","default_1","color_1","targetDarkLuma","maxDarkLuma","minLightLuma","targetLightLuma","minNormalLuma","targetNormalLuma","maxNormalLuma","targetMutesSaturation","maxMutesSaturation","targetVibrantSaturation","minVibrantSaturation","weightSaturation","weightLuma","weightPopulation","_findColorVariation","swatches","maxPopulation","targetLuma","minLuma","maxLuma","targetSaturation","minSaturation","maxSaturation","maxValue","swatch","s","l","LightVibrant","Muted","DarkMuted","LightMuted","_isAlreadySelected","saturation","luma","invertDiff","targetValue","_i","weightSum","weight","weightedMean","_createComparisonValue","p","_findMaxPopulation","_generateVariationColors","h","hslToRgb","_d","_f","_h","_j","_generateEmptySwatches","ImageBase","scaleDown","getWidth","getHeight","ratio","maxSide","resize","imageData","getImageData","pixels","offset","extendStatics","__extends","setPrototypeOf","__proto__","__","__createBinding","o","m","k","k2","__setModuleDefault","v","__importStar","base_1","Url","BrowserImage","_super","_initCanvas","image","canvas","_canvas","context","_context","getContext","_width","_height","drawImage","load","ua","ub","u","parse","protocol","port","location","hostname","crossOrigin","HTMLImageElement","Error","onImageLoad","complete","onerror","clearRect","putImageData","targetWidth","targetHeight","scale","getPixelCount","WebWorker","mmcq_1","vbox_1","pqueue_1","_splitBoxes","pq","lastSize","vbox","pop","count","vbox1","vbox2","hist","pq2","volume","contents","avg","generateSwatches","PQueue","comparator","_comparator","_sorted","_sort","peek","mapper","VBox","r1","r2","g1","g2","b1","b2","_volume","_count","dimension","shouldIgnore","rmax","rmin","gmax","gmin","bmax","bmin","hn","SIGBITS","Uint32Array","MAX_VALUE","RSHIFT","getColorIndex","invalidate","_avg","ntot","mult","rsum","gsum","bsum","rw","gw","bw","maxw","accSum","maxd","splitPoint","reverseSum","dim1","dim2","d1","d2","min","c2","doCut","hexToRgb","rgbToXyz","xyzToCIELab","z","rgbToCIELab","deltaE94","lab1","lab2","L1","a1","L2","a2","dL","da","db","xC1","xDL","xDC","xDE","xDH","rgbDiff","rgb1","rgb2","getColorDiffStatus","hexDiff","defer","DELTAE94_DIFF_STATUS","NA","PERFECT","CLOSE","GOOD","SIMILAR","promise","_resolve","_reject","hue2rgb","hex1","hex2","builder_1","Util","Quantizer","Generator","Filters","combinedFilter","_process","_palette","Filter","Default","MMCQ","hasMap","Map","mapSizeDescriptor","mapSize","mapForEach","hasSet","Set","setSizeDescriptor","setSize","setForEach","weakMapHas","WeakMap","has","weakSetHas","WeakSet","weakRefDeref","WeakRef","deref","booleanValueOf","valueOf","objectToString","functionToString","Function","$match","$slice","$replace","$toUpperCase","$toLowerCase","toLowerCase","$test","RegExp","$concat","$join","$arrSlice","$floor","bigIntValueOf","BigInt","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","Reflect","getPrototypeOf","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","quote","toStr","isRegExp","inspect_","depth","seen","TypeError","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","base","prev","getIndent","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","parts","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","isPlainObject","protoTag","stringTag","tag","hasOwn","remaining","trailer","lowbyte","entries","lineJoiner","isArr","symMap","syms","j","GetIntrinsic","callBound","$TypeError","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","curr","next","$wm","$m","$o","channel","assert","objects","node","listGet","listHas","listSet","freeGlobal","global","self","punycode","maxInt","tMax","skew","damp","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","stringFromCharCode","fromCharCode","RangeError","mapDomain","string","ucs2decode","output","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","decode","input","out","basic","oldi","w","baseMinusT","codePoint","inputLength","bias","lastIndexOf","encode","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","formats","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","delimiter","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","$0","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","segment","chain","leaf","cleanRoot","decodedRoot","isNaN","parseObject","normalizeParseOptions","tempObj","cleanStr","limit","skipIndex","part","bracketEqualsPos","pos","maybeMap","encodedVal","existing","combine","parseValues","newObj","merge","compact","getSideChannel","arrayPrefixGenerators","brackets","prefix","indices","repeat","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","addQueryPrefix","arrayFormat","encodeDotInKeys","encoder","encodeValuesOnly","format","formatter","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","commaRoundTrip","sideChannel","tmpSc","step","findFlag","isBuffer","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","hexTable","arrayToObject","reduce","acc","queue","refs","compacted","compactQueue","strWithoutPlus","unescape","decodeURIComponent","defaultEncoder","kind","escape","mapped","mergeTarget","targetItem","slashes","auth","hash","search","query","pathname","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","querystring","urlParse","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","rest","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","unshift","toASCII","ae","esc","encodeURIComponent","qm","relative","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","up","isAbsolute","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","getter","definition","chunkId","all","promises","globalThis","done","script","needAttach","scripts","timeout","nc","onScriptComplete","doneFns","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"theming-personal-theming.js?v=e1b22c35ab24ca06e805","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ImageEdit.vue?e9bd","webpack:///nextcloud/node_modules/vue-material-design-icons/ImageEdit.vue?vue&type=template&id=78c4184e","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?0f9a","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?65db","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?da76","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?7631","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?7e28","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?8797","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue","webpack:///nextcloud/node_modules/sortablejs/modular/sortable.esm.js","webpack:///nextcloud/node_modules/@vueuse/integrations/node_modules/vue-demi/lib/index.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?649a","webpack://nextcloud/./apps/theming/src/components/AppOrderSelectorElement.vue?aad4","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue","webpack:///nextcloud/node_modules/@vueuse/integrations/useSortable.mjs","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?96a5","webpack://nextcloud/./apps/theming/src/components/AppOrderSelector.vue?dbd7","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Undo.vue?d998","webpack:///nextcloud/node_modules/vue-material-design-icons/Undo.vue?vue&type=template&id=a6d3d438","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/theming/src/components/UserAppMenuSection.vue?fab3","webpack://nextcloud/./apps/theming/src/components/UserAppMenuSection.vue?402e","webpack:///nextcloud/apps/theming/src/UserThemes.vue","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=script&lang=js","webpack://nextcloud/./apps/theming/src/UserThemes.vue?3d37","webpack://nextcloud/./apps/theming/src/UserThemes.vue?7eb2","webpack://nextcloud/./apps/theming/src/UserThemes.vue?b683","webpack:///nextcloud/apps/theming/src/personal-settings.js","webpack:///nextcloud/apps/theming/src/helpers/refreshStyles.js","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=style&index=0&id=1ed3985c&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=style&index=0&id=63951bb4&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/theming/src/components/UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss","webpack:///nextcloud/node_modules/lodash/_baseEach.js","webpack:///nextcloud/node_modules/lodash/_baseFilter.js","webpack:///nextcloud/node_modules/lodash/_baseForOwn.js","webpack:///nextcloud/node_modules/lodash/_createBaseEach.js","webpack:///nextcloud/node_modules/lodash/defaults.js","webpack:///nextcloud/node_modules/lodash/filter.js","webpack:///nextcloud/node_modules/node-vibrant/lib/browser.js","webpack:///nextcloud/node_modules/node-vibrant/lib/builder.js","webpack:///nextcloud/node_modules/node-vibrant/lib/color.js","webpack:///nextcloud/node_modules/node-vibrant/lib/filter/default.js","webpack:///nextcloud/node_modules/node-vibrant/lib/filter/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/generator/default.js","webpack:///nextcloud/node_modules/node-vibrant/lib/generator/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/image/base.js","webpack:///nextcloud/node_modules/node-vibrant/lib/image/browser.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/index.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/mmcq.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/pqueue.js","webpack:///nextcloud/node_modules/node-vibrant/lib/quantizer/vbox.js","webpack:///nextcloud/node_modules/node-vibrant/lib/util.js","webpack:///nextcloud/node_modules/node-vibrant/lib/vibrant.js","webpack:///nextcloud/node_modules/object-inspect/index.js","webpack:///nextcloud/node_modules/side-channel/index.js","webpack:///nextcloud/node_modules/url/node_modules/punycode/punycode.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/formats.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/index.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/parse.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/stringify.js","webpack:///nextcloud/node_modules/url/node_modules/qs/lib/utils.js","webpack:///nextcloud/node_modules/url/url.js","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon image-edit-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"ImageEditIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageEdit.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ImageEdit.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ImageEdit.vue?vue&type=template&id=78c4184e\"\nimport script from \"./ImageEdit.vue?vue&type=script&lang=js\"\nexport * from \"./ImageEdit.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon image-edit-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M22.7 14.3L21.7 15.3L19.7 13.3L20.7 12.3C20.8 12.2 20.9 12.1 21.1 12.1C21.2 12.1 21.4 12.2 21.5 12.3L22.8 13.6C22.9 13.8 22.9 14.1 22.7 14.3M13 19.9V22H15.1L21.2 15.9L19.2 13.9L13 19.9M21 5C21 3.9 20.1 3 19 3H5C3.9 3 3 3.9 3 5V19C3 20.1 3.9 21 5 21H11V19.1L12.1 18H5L8.5 13.5L11 16.5L14.5 12L16.1 14.1L21 9.1V5Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n - @author Greta Doci <gretadoci@gmail.com>\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n - @author Julius Härtl <jus@bitgrid.net>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"background-selector\" data-user-theming-background-settings>\n\t\t<!-- Custom background -->\n\t\t<button :aria-pressed=\"backgroundImage === 'custom'\"\n\t\t\t:class=\"{\n\t\t\t\t'icon-loading': loading === 'custom',\n\t\t\t\t'background background__filepicker': true,\n\t\t\t\t'background--active': backgroundImage === 'custom'\n\t\t\t}\"\n\t\t\t:data-color-bright=\"invertTextColor(Theming.color)\"\n\t\t\tdata-user-theming-background-custom\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('theming', 'Custom background') }}\n\t\t\t<ImageEdit v-if=\"backgroundImage !== 'custom'\" :size=\"26\" />\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Default background -->\n\t\t<button :aria-pressed=\"backgroundImage === 'default'\"\n\t\t\t:class=\"{\n\t\t\t\t'icon-loading': loading === 'default',\n\t\t\t\t'background background__default': true,\n\t\t\t\t'background--active': backgroundImage === 'default'\n\t\t\t}\"\n\t\t\t:data-color-bright=\"invertTextColor(Theming.defaultColor)\"\n\t\t\t:style=\"{ '--border-color': Theming.defaultColor }\"\n\t\t\tdata-user-theming-background-default\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('theming', 'Default background') }}\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Custom color picker -->\n\t\t<div class=\"background-color\"\n\t\t\tdata-user-theming-background-color>\n\t\t\t<NcColorPicker v-model=\"Theming.color\"\n\t\t\t\t@input=\"debouncePickColor\">\n\t\t\t\t<NcButton type=\"ternary\">\n\t\t\t\t\t{{ t('theming', 'Change color') }}\n\t\t\t\t</NcButton>\n\t\t\t</NcColorPicker>\n\t\t</div>\n\n\t\t<!-- Remove background -->\n\t\t<button :aria-pressed=\"isBackgroundDisabled\"\n\t\t\t:class=\"{\n\t\t\t\t'background background__delete': true,\n\t\t\t\t'background--active': isBackgroundDisabled\n\t\t\t}\"\n\t\t\tdata-user-theming-background-clear\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"removeBackground\">\n\t\t\t{{ t('theming', 'No background') }}\n\t\t\t<Close v-if=\"!isBackgroundDisabled\" :size=\"32\" />\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\n\t\t<!-- Background set selection -->\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\t:title=\"shippedBackground.details.attribution\"\n\t\t\t:aria-label=\"shippedBackground.details.description\"\n\t\t\t:aria-pressed=\"backgroundImage === shippedBackground.name\"\n\t\t\t:class=\"{\n\t\t\t\t'background background__shipped': true,\n\t\t\t\t'icon-loading': loading === shippedBackground.name,\n\t\t\t\t'background--active': backgroundImage === shippedBackground.name\n\t\t\t}\"\n\t\t\t:data-color-bright=\"shippedBackground.details.theming === 'dark'\"\n\t\t\t:data-user-theming-background-shipped=\"shippedBackground.name\"\n\t\t\t:style=\"{ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\">\n\t\t\t<Check :size=\"44\" />\n\t\t</button>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath, generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport { getCurrentUser } from '@nextcloud/auth'\nimport { getFilePickerBuilder, showError } from '@nextcloud/dialogs'\nimport { loadState } from '@nextcloud/initial-state'\nimport { Palette } from 'node-vibrant/lib/color.js'\nimport axios from '@nextcloud/axios'\nimport debounce from 'debounce'\nimport NcColorPicker from '@nextcloud/vue/dist/Components/NcColorPicker.js'\nimport NcButton from '@nextcloud/vue/dist/Components/NcButton.js'\nimport Vibrant from 'node-vibrant'\n\nimport Check from 'vue-material-design-icons/Check.vue'\nimport Close from 'vue-material-design-icons/Close.vue'\nimport ImageEdit from 'vue-material-design-icons/ImageEdit.vue'\n\nconst backgroundImage = loadState('theming', 'backgroundImage')\nconst shippedBackgroundList = loadState('theming', 'shippedBackgrounds')\nconst themingDefaultBackground = loadState('theming', 'themingDefaultBackground')\nconst defaultShippedBackground = loadState('theming', 'defaultShippedBackground')\n\nconst prefixWithBaseUrl = (url) => generateFilePath('theming', '', 'img/background/') + url\n\nexport default {\n\tname: 'BackgroundSettings',\n\n\tcomponents: {\n\t\tCheck,\n\t\tClose,\n\t\tImageEdit,\n\t\tNcButton,\n\t\tNcColorPicker,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tloading: false,\n\t\t\tTheming: loadState('theming', 'data', {}),\n\n\t\t\t// User background image and color settings\n\t\t\tbackgroundImage,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList)\n\t\t\t\t.map(fileName => {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tname: fileName,\n\t\t\t\t\t\turl: prefixWithBaseUrl(fileName),\n\t\t\t\t\t\tpreview: prefixWithBaseUrl('preview/' + fileName),\n\t\t\t\t\t\tdetails: shippedBackgroundList[fileName],\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\t.filter(background => {\n\t\t\t\t\t// If the admin did not changed the global background\n\t\t\t\t\t// let's hide the default background to not show it twice\n\t\t\t\t\tif (!this.isGlobalBackgroundDeleted && !this.isGlobalBackgroundDefault) {\n\t\t\t\t\t\treturn background.name !== defaultShippedBackground\n\t\t\t\t\t}\n\t\t\t\t\treturn true\n\t\t\t\t})\n\t\t},\n\n\t\tisGlobalBackgroundDefault() {\n\t\t\treturn !!themingDefaultBackground\n\t\t},\n\n\t\tisGlobalBackgroundDeleted() {\n\t\t\treturn themingDefaultBackground === 'backgroundColor'\n\t\t},\n\n\t\tisBackgroundDisabled() {\n\t\t\treturn this.backgroundImage === 'disabled'\n\t\t\t|| !this.backgroundImage\n\t\t},\n\t},\n\n\tmethods: {\n\t\t/**\n\t\t * Do we need to invert the text if color is too bright?\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tinvertTextColor(color) {\n\t\t\treturn this.calculateLuma(color) > 0.6\n\t\t},\n\n\t\t/**\n\t\t * Calculate luminance of provided hex color\n\t\t *\n\t\t * @param {string} color the hex color\n\t\t */\n\t\tcalculateLuma(color) {\n\t\t\tconst [red, green, blue] = this.hexToRGB(color)\n\t\t\treturn (0.2126 * red + 0.7152 * green + 0.0722 * blue) / 255\n\t\t},\n\n\t\t/**\n\t\t * Convert hex color to RGB\n\t\t *\n\t\t * @param {string} hex the hex color\n\t\t */\n\t\thexToRGB(hex) {\n\t\t\tconst result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex)\n\t\t\treturn result\n\t\t\t\t? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]\n\t\t\t\t: null\n\t\t},\n\n\t\t/**\n\t\t * Update local state\n\t\t *\n\t\t * @param {object} data destructuring object\n\t\t * @param {string} data.backgroundColor background color value\n\t\t * @param {string} data.backgroundImage background image value\n\t\t * @param {string} data.version cache buster number\n\t\t * @see https://github.com/nextcloud/server/blob/c78bd45c64d9695724fc44fe8453a88824b85f2f/apps/theming/lib/Controller/UserThemeController.php#L187-L191\n\t\t */\n\t\tasync update(data) {\n\t\t\t// Update state\n\t\t\tthis.backgroundImage = data.backgroundImage\n\t\t\tthis.Theming.color = data.backgroundColor\n\n\t\t\t// Notify parent and reload style\n\t\t\tthis.$emit('update:background')\n\t\t\tthis.loading = false\n\t\t},\n\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync setFile(path, color = null) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/custom'), { value: path, color })\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync removeBackground() {\n\t\t\tthis.loading = 'remove'\n\t\t\tconst result = await axios.delete(generateUrl('/apps/theming/background/custom'))\n\t\t\tthis.update(result.data)\n\t\t},\n\n\t\tasync pickColor(event) {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = event?.target?.dataset?.color || this.Theming?.color || '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/color'), { color })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tdebouncePickColor: debounce(function(...args) {\n\t\t\tthis.pickColor(...args)\n\t\t}, 200),\n\n\t\tpickFile() {\n\t\t\tconst picker = getFilePickerBuilder(t('theming', 'Select a background from your files'))\n\t\t\t\t.allowDirectories(false)\n\t\t\t\t.setMimeTypeFilter(['image/png', 'image/gif', 'image/jpeg', 'image/svg+xml', 'image/svg'])\n\t\t\t\t.setMultiSelect(false)\n\t\t\t\t.addButton({\n\t\t\t\t\tid: 'select',\n\t\t\t\t\tlabel: t('theming', 'Select background'),\n\t\t\t\t\tcallback: (nodes) => {\n\t\t\t\t\t\tthis.applyFile(nodes[0]?.path)\n\t\t\t\t\t},\n\t\t\t\t\ttype: 'primary',\n\t\t\t\t})\n\t\t\t\t.build()\n\t\t\tpicker.pick()\n\t\t},\n\n\t\tasync applyFile(path) {\n\t\t\tif (!path || typeof path !== 'string' || path.trim().length === 0 || path === '/') {\n\t\t\t\tconsole.error('No valid background have been selected', { path })\n\t\t\t\tshowError(t('theming', 'No background has been selected'))\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.loading = 'custom'\n\n\t\t\t// Extract primary color from image\n\t\t\tlet response = null\n\t\t\tlet color = null\n\t\t\ttry {\n\t\t\t\tconst fileUrl = generateRemoteUrl('dav/files/' + getCurrentUser().uid + path)\n\t\t\t\tresponse = await axios.get(fileUrl, { responseType: 'blob' })\n\t\t\t\tconst blobUrl = URL.createObjectURL(response.data)\n\t\t\t\tconst palette = await this.getColorPaletteFromBlob(blobUrl)\n\n\t\t\t\t// DarkVibrant is accessible AND visually pleasing\n\t\t\t\t// Vibrant is not accessible enough and others are boring\n\t\t\t\tcolor = palette?.DarkVibrant?.hex\n\t\t\t\tthis.setFile(path, color)\n\n\t\t\t\t// Log data\n\t\t\t\tconsole.debug('Extracted colour', color, 'from custom image', path, palette)\n\t\t\t} catch (error) {\n\t\t\t\tthis.setFile(path)\n\t\t\t\tconsole.error('Unable to extract colour from custom image', { error, path, response, color })\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Extract a Vibrant color palette from a blob URL\n\t\t *\n\t\t * @param {string} blobUrl the blob URL\n\t\t * @return {Promise<Palette>}\n\t\t */\n\t\tgetColorPaletteFromBlob(blobUrl) {\n\t\t\treturn new Promise((resolve, reject) => {\n\t\t\t\tconst vibrant = new Vibrant(blobUrl)\n\t\t\t\tvibrant.getPalette((error, palette) => {\n\t\t\t\t\tif (error) {\n\t\t\t\t\t\treject(error)\n\t\t\t\t\t}\n\t\t\t\t\tresolve(palette)\n\t\t\t\t})\n\t\t\t})\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background-color {\n\t\tdisplay: flex;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-primary);\n\t}\n\n\t.background {\n\t\toverflow: hidden;\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\ttext-align: center;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-position: center center;\n\t\tbackground-size: cover;\n\n\t\t&__filepicker {\n\t\t\t&.background--active {\n\t\t\t\tcolor: white;\n\t\t\t\tbackground-image: var(--image-background);\n\t\t\t}\n\t\t}\n\n\t\t&__default {\n\t\t\tbackground-color: var(--color-primary-default);\n\t\t\tbackground-image: linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)), var(--image-background-plain, var(--image-background-default));\n\t\t}\n\n\t\t&__filepicker, &__default, &__color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t// Over a background image\n\t\t&__default,\n\t\t&__shipped {\n\t\t\tcolor: white;\n\t\t}\n\n\t\t// Text and svg icon dark on bright background\n\t\t&[data-color-bright] {\n\t\t\tcolor: black;\n\t\t}\n\n\t\t&--active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\toutline: 2px solid var(--color-main-text) !important;\n\t\t\tborder-color: var(--color-main-background) !important;\n\t\t}\n\n\t\t// Icon\n\t\tspan {\n\t\t\tmargin: 4px;\n\t\t}\n\n\t\t.check-icon {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t&--active:not(.icon-loading) {\n\t\t\t.check-icon {\n\t\t\t\t// Show checkmark\n\t\t\t\tdisplay: block !important;\n\t\t\t}\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=1175e65a&scoped=true\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=1175e65a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1175e65a\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"background-selector\",attrs:{\"data-user-theming-background-settings\":\"\"}},[_c('button',{class:{\n\t\t\t'icon-loading': _vm.loading === 'custom',\n\t\t\t'background background__filepicker': true,\n\t\t\t'background--active': _vm.backgroundImage === 'custom'\n\t\t},attrs:{\"aria-pressed\":_vm.backgroundImage === 'custom',\"data-color-bright\":_vm.invertTextColor(_vm.Theming.color),\"data-user-theming-background-custom\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Custom background'))+\"\\n\\t\\t\"),(_vm.backgroundImage !== 'custom')?_c('ImageEdit',{attrs:{\"size\":26}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('button',{class:{\n\t\t\t'icon-loading': _vm.loading === 'default',\n\t\t\t'background background__default': true,\n\t\t\t'background--active': _vm.backgroundImage === 'default'\n\t\t},style:({ '--border-color': _vm.Theming.defaultColor }),attrs:{\"aria-pressed\":_vm.backgroundImage === 'default',\"data-color-bright\":_vm.invertTextColor(_vm.Theming.defaultColor),\"data-user-theming-background-default\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Default background'))+\"\\n\\t\\t\"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_c('div',{staticClass:\"background-color\",attrs:{\"data-user-theming-background-color\":\"\"}},[_c('NcColorPicker',{on:{\"input\":_vm.debouncePickColor},model:{value:(_vm.Theming.color),callback:function ($$v) {_vm.$set(_vm.Theming, \"color\", $$v)},expression:\"Theming.color\"}},[_c('NcButton',{attrs:{\"type\":\"ternary\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Change color'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),_c('button',{class:{\n\t\t\t'background background__delete': true,\n\t\t\t'background--active': _vm.isBackgroundDisabled\n\t\t},attrs:{\"aria-pressed\":_vm.isBackgroundDisabled,\"data-user-theming-background-clear\":\"\",\"tabindex\":\"0\"},on:{\"click\":_vm.removeBackground}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'No background'))+\"\\n\\t\\t\"),(!_vm.isBackgroundDisabled)?_c('Close',{attrs:{\"size\":32}}):_vm._e(),_vm._v(\" \"),_c('Check',{attrs:{\"size\":44}})],1),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{key:shippedBackground.name,class:{\n\t\t\t'background background__shipped': true,\n\t\t\t'icon-loading': _vm.loading === shippedBackground.name,\n\t\t\t'background--active': _vm.backgroundImage === shippedBackground.name\n\t\t},style:({ backgroundImage: 'url(' + shippedBackground.preview + ')', '--border-color': shippedBackground.details.primary_color }),attrs:{\"title\":shippedBackground.details.attribution,\"aria-label\":shippedBackground.details.description,\"aria-pressed\":_vm.backgroundImage === shippedBackground.name,\"data-color-bright\":shippedBackground.details.theming === 'dark',\"data-user-theming-background-shipped\":shippedBackground.name,\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}},[_c('Check',{attrs:{\"size\":44}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"theming__preview\",class:'theming__preview--' + _vm.theme.id},[_c('div',{staticClass:\"theming__preview-image\",style:({ backgroundImage: 'url(' + _vm.img + ')' }),on:{\"click\":_vm.onToggle}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.theme.title))]),_vm._v(\" \"),_c('p',{staticClass:\"theming__preview-explanation\"},[_vm._v(_vm._s(_vm.theme.description))]),_vm._v(\" \"),(_vm.enforced)?_c('span',{staticClass:\"theming__preview-warning\",attrs:{\"role\":\"note\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Theme selection is enforced'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.enforced),expression:\"!enforced\"}],staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.checked,\"disabled\":_vm.enforced,\"name\":_vm.name,\"type\":_vm.switchType},on:{\"update:checked\":function($event){_vm.checked=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.theme.enableLabel)+\"\\n\\t\\t\")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n\t<div :class=\"'theming__preview--' + theme.id\" class=\"theming__preview\">\n\t\t<div class=\"theming__preview-image\" :style=\"{ backgroundImage: 'url(' + img + ')' }\" @click=\"onToggle\" />\n\t\t<div class=\"theming__preview-description\">\n\t\t\t<h3>{{ theme.title }}</h3>\n\t\t\t<p class=\"theming__preview-explanation\">{{ theme.description }}</p>\n\t\t\t<span v-if=\"enforced\" class=\"theming__preview-warning\" role=\"note\">\n\t\t\t\t{{ t('theming', 'Theme selection is enforced') }}\n\t\t\t</span>\n\n\t\t\t<!-- Only show checkbox if we can change themes -->\n\t\t\t<NcCheckboxRadioSwitch v-show=\"!enforced\"\n\t\t\t\tclass=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"checked\"\n\t\t\t\t:disabled=\"enforced\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:type=\"switchType\">\n\t\t\t\t{{ theme.enableLabel }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath } from '@nextcloud/router'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\n\nexport default {\n\tname: 'ItemPreview',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\tprops: {\n\t\tenforced: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ttheme: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tunique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tswitchType() {\n\t\t\treturn this.unique ? 'switch' : 'radio'\n\t\t},\n\n\t\tname() {\n\t\t\treturn !this.unique ? this.type : null\n\t\t},\n\n\t\timg() {\n\t\t\treturn generateFilePath('theming', 'img', this.theme.id + '.jpg')\n\t\t},\n\n\t\tchecked: {\n\t\t\tget() {\n\t\t\t\treturn this.selected\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tif (this.enforced) {\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tconsole.debug('Changed theme', this.theme.id, checked)\n\n\t\t\t\t// If this is a radio, we can only enable\n\t\t\t\tif (!this.unique) {\n\t\t\t\t\tthis.$emit('change', { enabled: true, id: this.theme.id })\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// If this is a switch, we can disable the theme\n\t\t\t\tthis.$emit('change', { enabled: checked === true, id: this.theme.id })\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonToggle() {\n\t\t\tif (this.enforced) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tif (this.switchType === 'radio') {\n\t\t\t\tthis.checked = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Invert state\n\t\t\tthis.checked = !this.checked\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n@use 'sass:math';\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-explanation {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\th3 {\n\t\t\tfont-weight: bold;\n\t\t\tmargin-bottom: 0;\n\t\t}\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: math.div(1024px, 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=63951bb4&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=63951bb4&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=63951bb4&scoped=true\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js\"\nimport style0 from \"./ItemPreview.vue?vue&type=style&index=0&id=63951bb4&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"63951bb4\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Navigation bar settings')}},[_c('p',[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo.'))+\"\\n\\t\")]),_vm._v(\" \"),(_vm.enforcedDefaultApp)?_c('NcNoteCard',{attrs:{\"id\":_vm.elementIdEnforcedDefaultApp,\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'The default app can not be changed because it was configured by the administrator.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_vm.hasAppOrderChanged)?_c('NcNoteCard',{attrs:{\"id\":_vm.elementIdAppOrderChanged,\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'The app order was changed, to see it in action you have to reload the page.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),_c('AppOrderSelector',{staticClass:\"user-app-menu-order\",attrs:{\"aria-details\":_vm.ariaDetailsAppOrder,\"value\":_vm.appOrder},on:{\"update:value\":_vm.updateAppOrder}}),_vm._v(\" \"),_c('NcButton',{attrs:{\"data-test-id\":\"btn-apporder-reset\",\"disabled\":!_vm.hasCustomAppOrder,\"type\":\"tertiary\"},on:{\"click\":_vm.resetAppOrder},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconUndo',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Reset default app order'))+\"\\n\\t\")])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**!\n * Sortable 1.10.2\n * @author\tRubaXa <trash@rubaxa.org>\n * @author\towenm <owen23355@gmail.com>\n * @license MIT\n */\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function (obj) {\n return typeof obj;\n };\n } else {\n _typeof = function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) arr2[i] = arr[i];\n\n return arr2;\n }\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nvar version = \"1.10.2\";\n\nfunction userAgent(pattern) {\n if (typeof window !== 'undefined' && window.navigator) {\n return !!\n /*@__PURE__*/\n navigator.userAgent.match(pattern);\n }\n}\n\nvar IE11OrLess = userAgent(/(?:Trident.*rv[ :]?11\\.|msie|iemobile|Windows Phone)/i);\nvar Edge = userAgent(/Edge/i);\nvar FireFox = userAgent(/firefox/i);\nvar Safari = userAgent(/safari/i) && !userAgent(/chrome/i) && !userAgent(/android/i);\nvar IOS = userAgent(/iP(ad|od|hone)/i);\nvar ChromeForAndroid = userAgent(/chrome/i) && userAgent(/android/i);\n\nvar captureMode = {\n capture: false,\n passive: false\n};\n\nfunction on(el, event, fn) {\n el.addEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction off(el, event, fn) {\n el.removeEventListener(event, fn, !IE11OrLess && captureMode);\n}\n\nfunction matches(\n/**HTMLElement*/\nel,\n/**String*/\nselector) {\n if (!selector) return;\n selector[0] === '>' && (selector = selector.substring(1));\n\n if (el) {\n try {\n if (el.matches) {\n return el.matches(selector);\n } else if (el.msMatchesSelector) {\n return el.msMatchesSelector(selector);\n } else if (el.webkitMatchesSelector) {\n return el.webkitMatchesSelector(selector);\n }\n } catch (_) {\n return false;\n }\n }\n\n return false;\n}\n\nfunction getParentOrHost(el) {\n return el.host && el !== document && el.host.nodeType ? el.host : el.parentNode;\n}\n\nfunction closest(\n/**HTMLElement*/\nel,\n/**String*/\nselector,\n/**HTMLElement*/\nctx, includeCTX) {\n if (el) {\n ctx = ctx || document;\n\n do {\n if (selector != null && (selector[0] === '>' ? el.parentNode === ctx && matches(el, selector) : matches(el, selector)) || includeCTX && el === ctx) {\n return el;\n }\n\n if (el === ctx) break;\n /* jshint boss:true */\n } while (el = getParentOrHost(el));\n }\n\n return null;\n}\n\nvar R_SPACE = /\\s+/g;\n\nfunction toggleClass(el, name, state) {\n if (el && name) {\n if (el.classList) {\n el.classList[state ? 'add' : 'remove'](name);\n } else {\n var className = (' ' + el.className + ' ').replace(R_SPACE, ' ').replace(' ' + name + ' ', ' ');\n el.className = (className + (state ? ' ' + name : '')).replace(R_SPACE, ' ');\n }\n }\n}\n\nfunction css(el, prop, val) {\n var style = el && el.style;\n\n if (style) {\n if (val === void 0) {\n if (document.defaultView && document.defaultView.getComputedStyle) {\n val = document.defaultView.getComputedStyle(el, '');\n } else if (el.currentStyle) {\n val = el.currentStyle;\n }\n\n return prop === void 0 ? val : val[prop];\n } else {\n if (!(prop in style) && prop.indexOf('webkit') === -1) {\n prop = '-webkit-' + prop;\n }\n\n style[prop] = val + (typeof val === 'string' ? '' : 'px');\n }\n }\n}\n\nfunction matrix(el, selfOnly) {\n var appliedTransforms = '';\n\n if (typeof el === 'string') {\n appliedTransforms = el;\n } else {\n do {\n var transform = css(el, 'transform');\n\n if (transform && transform !== 'none') {\n appliedTransforms = transform + ' ' + appliedTransforms;\n }\n /* jshint boss:true */\n\n } while (!selfOnly && (el = el.parentNode));\n }\n\n var matrixFn = window.DOMMatrix || window.WebKitCSSMatrix || window.CSSMatrix || window.MSCSSMatrix;\n /*jshint -W056 */\n\n return matrixFn && new matrixFn(appliedTransforms);\n}\n\nfunction find(ctx, tagName, iterator) {\n if (ctx) {\n var list = ctx.getElementsByTagName(tagName),\n i = 0,\n n = list.length;\n\n if (iterator) {\n for (; i < n; i++) {\n iterator(list[i], i);\n }\n }\n\n return list;\n }\n\n return [];\n}\n\nfunction getWindowScrollingElement() {\n var scrollingElement = document.scrollingElement;\n\n if (scrollingElement) {\n return scrollingElement;\n } else {\n return document.documentElement;\n }\n}\n/**\r\n * Returns the \"bounding client rect\" of given element\r\n * @param {HTMLElement} el The element whose boundingClientRect is wanted\r\n * @param {[Boolean]} relativeToContainingBlock Whether the rect should be relative to the containing block of (including) the container\r\n * @param {[Boolean]} relativeToNonStaticParent Whether the rect should be relative to the relative parent of (including) the contaienr\r\n * @param {[Boolean]} undoScale Whether the container's scale() should be undone\r\n * @param {[HTMLElement]} container The parent the element will be placed in\r\n * @return {Object} The boundingClientRect of el, with specified adjustments\r\n */\n\n\nfunction getRect(el, relativeToContainingBlock, relativeToNonStaticParent, undoScale, container) {\n if (!el.getBoundingClientRect && el !== window) return;\n var elRect, top, left, bottom, right, height, width;\n\n if (el !== window && el !== getWindowScrollingElement()) {\n elRect = el.getBoundingClientRect();\n top = elRect.top;\n left = elRect.left;\n bottom = elRect.bottom;\n right = elRect.right;\n height = elRect.height;\n width = elRect.width;\n } else {\n top = 0;\n left = 0;\n bottom = window.innerHeight;\n right = window.innerWidth;\n height = window.innerHeight;\n width = window.innerWidth;\n }\n\n if ((relativeToContainingBlock || relativeToNonStaticParent) && el !== window) {\n // Adjust for translate()\n container = container || el.parentNode; // solves #1123 (see: https://stackoverflow.com/a/37953806/6088312)\n // Not needed on <= IE11\n\n if (!IE11OrLess) {\n do {\n if (container && container.getBoundingClientRect && (css(container, 'transform') !== 'none' || relativeToNonStaticParent && css(container, 'position') !== 'static')) {\n var containerRect = container.getBoundingClientRect(); // Set relative to edges of padding box of container\n\n top -= containerRect.top + parseInt(css(container, 'border-top-width'));\n left -= containerRect.left + parseInt(css(container, 'border-left-width'));\n bottom = top + elRect.height;\n right = left + elRect.width;\n break;\n }\n /* jshint boss:true */\n\n } while (container = container.parentNode);\n }\n }\n\n if (undoScale && el !== window) {\n // Adjust for scale()\n var elMatrix = matrix(container || el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d;\n\n if (elMatrix) {\n top /= scaleY;\n left /= scaleX;\n width /= scaleX;\n height /= scaleY;\n bottom = top + height;\n right = left + width;\n }\n }\n\n return {\n top: top,\n left: left,\n bottom: bottom,\n right: right,\n width: width,\n height: height\n };\n}\n/**\r\n * Checks if a side of an element is scrolled past a side of its parents\r\n * @param {HTMLElement} el The element who's side being scrolled out of view is in question\r\n * @param {String} elSide Side of the element in question ('top', 'left', 'right', 'bottom')\r\n * @param {String} parentSide Side of the parent in question ('top', 'left', 'right', 'bottom')\r\n * @return {HTMLElement} The parent scroll element that the el's side is scrolled past, or null if there is no such element\r\n */\n\n\nfunction isScrolledPast(el, elSide, parentSide) {\n var parent = getParentAutoScrollElement(el, true),\n elSideVal = getRect(el)[elSide];\n /* jshint boss:true */\n\n while (parent) {\n var parentSideVal = getRect(parent)[parentSide],\n visible = void 0;\n\n if (parentSide === 'top' || parentSide === 'left') {\n visible = elSideVal >= parentSideVal;\n } else {\n visible = elSideVal <= parentSideVal;\n }\n\n if (!visible) return parent;\n if (parent === getWindowScrollingElement()) break;\n parent = getParentAutoScrollElement(parent, false);\n }\n\n return false;\n}\n/**\r\n * Gets nth child of el, ignoring hidden children, sortable's elements (does not ignore clone if it's visible)\r\n * and non-draggable elements\r\n * @param {HTMLElement} el The parent element\r\n * @param {Number} childNum The index of the child\r\n * @param {Object} options Parent Sortable's options\r\n * @return {HTMLElement} The child at index childNum, or null if not found\r\n */\n\n\nfunction getChild(el, childNum, options) {\n var currentChild = 0,\n i = 0,\n children = el.children;\n\n while (i < children.length) {\n if (children[i].style.display !== 'none' && children[i] !== Sortable.ghost && children[i] !== Sortable.dragged && closest(children[i], options.draggable, el, false)) {\n if (currentChild === childNum) {\n return children[i];\n }\n\n currentChild++;\n }\n\n i++;\n }\n\n return null;\n}\n/**\r\n * Gets the last child in the el, ignoring ghostEl or invisible elements (clones)\r\n * @param {HTMLElement} el Parent element\r\n * @param {selector} selector Any other elements that should be ignored\r\n * @return {HTMLElement} The last child, ignoring ghostEl\r\n */\n\n\nfunction lastChild(el, selector) {\n var last = el.lastElementChild;\n\n while (last && (last === Sortable.ghost || css(last, 'display') === 'none' || selector && !matches(last, selector))) {\n last = last.previousElementSibling;\n }\n\n return last || null;\n}\n/**\r\n * Returns the index of an element within its parent for a selected set of\r\n * elements\r\n * @param {HTMLElement} el\r\n * @param {selector} selector\r\n * @return {number}\r\n */\n\n\nfunction index(el, selector) {\n var index = 0;\n\n if (!el || !el.parentNode) {\n return -1;\n }\n /* jshint boss:true */\n\n\n while (el = el.previousElementSibling) {\n if (el.nodeName.toUpperCase() !== 'TEMPLATE' && el !== Sortable.clone && (!selector || matches(el, selector))) {\n index++;\n }\n }\n\n return index;\n}\n/**\r\n * Returns the scroll offset of the given element, added with all the scroll offsets of parent elements.\r\n * The value is returned in real pixels.\r\n * @param {HTMLElement} el\r\n * @return {Array} Offsets in the format of [left, top]\r\n */\n\n\nfunction getRelativeScrollOffset(el) {\n var offsetLeft = 0,\n offsetTop = 0,\n winScroller = getWindowScrollingElement();\n\n if (el) {\n do {\n var elMatrix = matrix(el),\n scaleX = elMatrix.a,\n scaleY = elMatrix.d;\n offsetLeft += el.scrollLeft * scaleX;\n offsetTop += el.scrollTop * scaleY;\n } while (el !== winScroller && (el = el.parentNode));\n }\n\n return [offsetLeft, offsetTop];\n}\n/**\r\n * Returns the index of the object within the given array\r\n * @param {Array} arr Array that may or may not hold the object\r\n * @param {Object} obj An object that has a key-value pair unique to and identical to a key-value pair in the object you want to find\r\n * @return {Number} The index of the object in the array, or -1\r\n */\n\n\nfunction indexOfObject(arr, obj) {\n for (var i in arr) {\n if (!arr.hasOwnProperty(i)) continue;\n\n for (var key in obj) {\n if (obj.hasOwnProperty(key) && obj[key] === arr[i][key]) return Number(i);\n }\n }\n\n return -1;\n}\n\nfunction getParentAutoScrollElement(el, includeSelf) {\n // skip to window\n if (!el || !el.getBoundingClientRect) return getWindowScrollingElement();\n var elem = el;\n var gotSelf = false;\n\n do {\n // we don't need to get elem css if it isn't even overflowing in the first place (performance)\n if (elem.clientWidth < elem.scrollWidth || elem.clientHeight < elem.scrollHeight) {\n var elemCSS = css(elem);\n\n if (elem.clientWidth < elem.scrollWidth && (elemCSS.overflowX == 'auto' || elemCSS.overflowX == 'scroll') || elem.clientHeight < elem.scrollHeight && (elemCSS.overflowY == 'auto' || elemCSS.overflowY == 'scroll')) {\n if (!elem.getBoundingClientRect || elem === document.body) return getWindowScrollingElement();\n if (gotSelf || includeSelf) return elem;\n gotSelf = true;\n }\n }\n /* jshint boss:true */\n\n } while (elem = elem.parentNode);\n\n return getWindowScrollingElement();\n}\n\nfunction extend(dst, src) {\n if (dst && src) {\n for (var key in src) {\n if (src.hasOwnProperty(key)) {\n dst[key] = src[key];\n }\n }\n }\n\n return dst;\n}\n\nfunction isRectEqual(rect1, rect2) {\n return Math.round(rect1.top) === Math.round(rect2.top) && Math.round(rect1.left) === Math.round(rect2.left) && Math.round(rect1.height) === Math.round(rect2.height) && Math.round(rect1.width) === Math.round(rect2.width);\n}\n\nvar _throttleTimeout;\n\nfunction throttle(callback, ms) {\n return function () {\n if (!_throttleTimeout) {\n var args = arguments,\n _this = this;\n\n if (args.length === 1) {\n callback.call(_this, args[0]);\n } else {\n callback.apply(_this, args);\n }\n\n _throttleTimeout = setTimeout(function () {\n _throttleTimeout = void 0;\n }, ms);\n }\n };\n}\n\nfunction cancelThrottle() {\n clearTimeout(_throttleTimeout);\n _throttleTimeout = void 0;\n}\n\nfunction scrollBy(el, x, y) {\n el.scrollLeft += x;\n el.scrollTop += y;\n}\n\nfunction clone(el) {\n var Polymer = window.Polymer;\n var $ = window.jQuery || window.Zepto;\n\n if (Polymer && Polymer.dom) {\n return Polymer.dom(el).cloneNode(true);\n } else if ($) {\n return $(el).clone(true)[0];\n } else {\n return el.cloneNode(true);\n }\n}\n\nfunction setRect(el, rect) {\n css(el, 'position', 'absolute');\n css(el, 'top', rect.top);\n css(el, 'left', rect.left);\n css(el, 'width', rect.width);\n css(el, 'height', rect.height);\n}\n\nfunction unsetRect(el) {\n css(el, 'position', '');\n css(el, 'top', '');\n css(el, 'left', '');\n css(el, 'width', '');\n css(el, 'height', '');\n}\n\nvar expando = 'Sortable' + new Date().getTime();\n\nfunction AnimationStateManager() {\n var animationStates = [],\n animationCallbackId;\n return {\n captureAnimationState: function captureAnimationState() {\n animationStates = [];\n if (!this.options.animation) return;\n var children = [].slice.call(this.el.children);\n children.forEach(function (child) {\n if (css(child, 'display') === 'none' || child === Sortable.ghost) return;\n animationStates.push({\n target: child,\n rect: getRect(child)\n });\n\n var fromRect = _objectSpread({}, animationStates[animationStates.length - 1].rect); // If animating: compensate for current animation\n\n\n if (child.thisAnimationDuration) {\n var childMatrix = matrix(child, true);\n\n if (childMatrix) {\n fromRect.top -= childMatrix.f;\n fromRect.left -= childMatrix.e;\n }\n }\n\n child.fromRect = fromRect;\n });\n },\n addAnimationState: function addAnimationState(state) {\n animationStates.push(state);\n },\n removeAnimationState: function removeAnimationState(target) {\n animationStates.splice(indexOfObject(animationStates, {\n target: target\n }), 1);\n },\n animateAll: function animateAll(callback) {\n var _this = this;\n\n if (!this.options.animation) {\n clearTimeout(animationCallbackId);\n if (typeof callback === 'function') callback();\n return;\n }\n\n var animating = false,\n animationTime = 0;\n animationStates.forEach(function (state) {\n var time = 0,\n target = state.target,\n fromRect = target.fromRect,\n toRect = getRect(target),\n prevFromRect = target.prevFromRect,\n prevToRect = target.prevToRect,\n animatingRect = state.rect,\n targetMatrix = matrix(target, true);\n\n if (targetMatrix) {\n // Compensate for current animation\n toRect.top -= targetMatrix.f;\n toRect.left -= targetMatrix.e;\n }\n\n target.toRect = toRect;\n\n if (target.thisAnimationDuration) {\n // Could also check if animatingRect is between fromRect and toRect\n if (isRectEqual(prevFromRect, toRect) && !isRectEqual(fromRect, toRect) && // Make sure animatingRect is on line between toRect & fromRect\n (animatingRect.top - toRect.top) / (animatingRect.left - toRect.left) === (fromRect.top - toRect.top) / (fromRect.left - toRect.left)) {\n // If returning to same place as started from animation and on same axis\n time = calculateRealTime(animatingRect, prevFromRect, prevToRect, _this.options);\n }\n } // if fromRect != toRect: animate\n\n\n if (!isRectEqual(toRect, fromRect)) {\n target.prevFromRect = fromRect;\n target.prevToRect = toRect;\n\n if (!time) {\n time = _this.options.animation;\n }\n\n _this.animate(target, animatingRect, toRect, time);\n }\n\n if (time) {\n animating = true;\n animationTime = Math.max(animationTime, time);\n clearTimeout(target.animationResetTimer);\n target.animationResetTimer = setTimeout(function () {\n target.animationTime = 0;\n target.prevFromRect = null;\n target.fromRect = null;\n target.prevToRect = null;\n target.thisAnimationDuration = null;\n }, time);\n target.thisAnimationDuration = time;\n }\n });\n clearTimeout(animationCallbackId);\n\n if (!animating) {\n if (typeof callback === 'function') callback();\n } else {\n animationCallbackId = setTimeout(function () {\n if (typeof callback === 'function') callback();\n }, animationTime);\n }\n\n animationStates = [];\n },\n animate: function animate(target, currentRect, toRect, duration) {\n if (duration) {\n css(target, 'transition', '');\n css(target, 'transform', '');\n var elMatrix = matrix(this.el),\n scaleX = elMatrix && elMatrix.a,\n scaleY = elMatrix && elMatrix.d,\n translateX = (currentRect.left - toRect.left) / (scaleX || 1),\n translateY = (currentRect.top - toRect.top) / (scaleY || 1);\n target.animatingX = !!translateX;\n target.animatingY = !!translateY;\n css(target, 'transform', 'translate3d(' + translateX + 'px,' + translateY + 'px,0)');\n repaint(target); // repaint\n\n css(target, 'transition', 'transform ' + duration + 'ms' + (this.options.easing ? ' ' + this.options.easing : ''));\n css(target, 'transform', 'translate3d(0,0,0)');\n typeof target.animated === 'number' && clearTimeout(target.animated);\n target.animated = setTimeout(function () {\n css(target, 'transition', '');\n css(target, 'transform', '');\n target.animated = false;\n target.animatingX = false;\n target.animatingY = false;\n }, duration);\n }\n }\n };\n}\n\nfunction repaint(target) {\n return target.offsetWidth;\n}\n\nfunction calculateRealTime(animatingRect, fromRect, toRect, options) {\n return Math.sqrt(Math.pow(fromRect.top - animatingRect.top, 2) + Math.pow(fromRect.left - animatingRect.left, 2)) / Math.sqrt(Math.pow(fromRect.top - toRect.top, 2) + Math.pow(fromRect.left - toRect.left, 2)) * options.animation;\n}\n\nvar plugins = [];\nvar defaults = {\n initializeByDefault: true\n};\nvar PluginManager = {\n mount: function mount(plugin) {\n // Set default static properties\n for (var option in defaults) {\n if (defaults.hasOwnProperty(option) && !(option in plugin)) {\n plugin[option] = defaults[option];\n }\n }\n\n plugins.push(plugin);\n },\n pluginEvent: function pluginEvent(eventName, sortable, evt) {\n var _this = this;\n\n this.eventCanceled = false;\n\n evt.cancel = function () {\n _this.eventCanceled = true;\n };\n\n var eventNameGlobal = eventName + 'Global';\n plugins.forEach(function (plugin) {\n if (!sortable[plugin.pluginName]) return; // Fire global events if it exists in this sortable\n\n if (sortable[plugin.pluginName][eventNameGlobal]) {\n sortable[plugin.pluginName][eventNameGlobal](_objectSpread({\n sortable: sortable\n }, evt));\n } // Only fire plugin event if plugin is enabled in this sortable,\n // and plugin has event defined\n\n\n if (sortable.options[plugin.pluginName] && sortable[plugin.pluginName][eventName]) {\n sortable[plugin.pluginName][eventName](_objectSpread({\n sortable: sortable\n }, evt));\n }\n });\n },\n initializePlugins: function initializePlugins(sortable, el, defaults, options) {\n plugins.forEach(function (plugin) {\n var pluginName = plugin.pluginName;\n if (!sortable.options[pluginName] && !plugin.initializeByDefault) return;\n var initialized = new plugin(sortable, el, sortable.options);\n initialized.sortable = sortable;\n initialized.options = sortable.options;\n sortable[pluginName] = initialized; // Add default options from plugin\n\n _extends(defaults, initialized.defaults);\n });\n\n for (var option in sortable.options) {\n if (!sortable.options.hasOwnProperty(option)) continue;\n var modified = this.modifyOption(sortable, option, sortable.options[option]);\n\n if (typeof modified !== 'undefined') {\n sortable.options[option] = modified;\n }\n }\n },\n getEventProperties: function getEventProperties(name, sortable) {\n var eventProperties = {};\n plugins.forEach(function (plugin) {\n if (typeof plugin.eventProperties !== 'function') return;\n\n _extends(eventProperties, plugin.eventProperties.call(sortable[plugin.pluginName], name));\n });\n return eventProperties;\n },\n modifyOption: function modifyOption(sortable, name, value) {\n var modifiedValue;\n plugins.forEach(function (plugin) {\n // Plugin must exist on the Sortable\n if (!sortable[plugin.pluginName]) return; // If static option listener exists for this option, call in the context of the Sortable's instance of this plugin\n\n if (plugin.optionListeners && typeof plugin.optionListeners[name] === 'function') {\n modifiedValue = plugin.optionListeners[name].call(sortable[plugin.pluginName], value);\n }\n });\n return modifiedValue;\n }\n};\n\nfunction dispatchEvent(_ref) {\n var sortable = _ref.sortable,\n rootEl = _ref.rootEl,\n name = _ref.name,\n targetEl = _ref.targetEl,\n cloneEl = _ref.cloneEl,\n toEl = _ref.toEl,\n fromEl = _ref.fromEl,\n oldIndex = _ref.oldIndex,\n newIndex = _ref.newIndex,\n oldDraggableIndex = _ref.oldDraggableIndex,\n newDraggableIndex = _ref.newDraggableIndex,\n originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n extraEventProperties = _ref.extraEventProperties;\n sortable = sortable || rootEl && rootEl[expando];\n if (!sortable) return;\n var evt,\n options = sortable.options,\n onName = 'on' + name.charAt(0).toUpperCase() + name.substr(1); // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent(name, {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent(name, true, true);\n }\n\n evt.to = toEl || rootEl;\n evt.from = fromEl || rootEl;\n evt.item = targetEl || rootEl;\n evt.clone = cloneEl;\n evt.oldIndex = oldIndex;\n evt.newIndex = newIndex;\n evt.oldDraggableIndex = oldDraggableIndex;\n evt.newDraggableIndex = newDraggableIndex;\n evt.originalEvent = originalEvent;\n evt.pullMode = putSortable ? putSortable.lastPutMode : undefined;\n\n var allEventProperties = _objectSpread({}, extraEventProperties, PluginManager.getEventProperties(name, sortable));\n\n for (var option in allEventProperties) {\n evt[option] = allEventProperties[option];\n }\n\n if (rootEl) {\n rootEl.dispatchEvent(evt);\n }\n\n if (options[onName]) {\n options[onName].call(sortable, evt);\n }\n}\n\nvar pluginEvent = function pluginEvent(eventName, sortable) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n originalEvent = _ref.evt,\n data = _objectWithoutProperties(_ref, [\"evt\"]);\n\n PluginManager.pluginEvent.bind(Sortable)(eventName, sortable, _objectSpread({\n dragEl: dragEl,\n parentEl: parentEl,\n ghostEl: ghostEl,\n rootEl: rootEl,\n nextEl: nextEl,\n lastDownEl: lastDownEl,\n cloneEl: cloneEl,\n cloneHidden: cloneHidden,\n dragStarted: moved,\n putSortable: putSortable,\n activeSortable: Sortable.active,\n originalEvent: originalEvent,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n hideGhostForTarget: _hideGhostForTarget,\n unhideGhostForTarget: _unhideGhostForTarget,\n cloneNowHidden: function cloneNowHidden() {\n cloneHidden = true;\n },\n cloneNowShown: function cloneNowShown() {\n cloneHidden = false;\n },\n dispatchSortableEvent: function dispatchSortableEvent(name) {\n _dispatchEvent({\n sortable: sortable,\n name: name,\n originalEvent: originalEvent\n });\n }\n }, data));\n};\n\nfunction _dispatchEvent(info) {\n dispatchEvent(_objectSpread({\n putSortable: putSortable,\n cloneEl: cloneEl,\n targetEl: dragEl,\n rootEl: rootEl,\n oldIndex: oldIndex,\n oldDraggableIndex: oldDraggableIndex,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex\n }, info));\n}\n\nvar dragEl,\n parentEl,\n ghostEl,\n rootEl,\n nextEl,\n lastDownEl,\n cloneEl,\n cloneHidden,\n oldIndex,\n newIndex,\n oldDraggableIndex,\n newDraggableIndex,\n activeGroup,\n putSortable,\n awaitingDragStarted = false,\n ignoreNextClick = false,\n sortables = [],\n tapEvt,\n touchEvt,\n lastDx,\n lastDy,\n tapDistanceLeft,\n tapDistanceTop,\n moved,\n lastTarget,\n lastDirection,\n pastFirstInvertThresh = false,\n isCircumstantialInvert = false,\n targetMoveDistance,\n // For positioning ghost absolutely\nghostRelativeParent,\n ghostRelativeParentInitialScroll = [],\n // (left, top)\n_silent = false,\n savedInputChecked = [];\n/** @const */\n\nvar documentExists = typeof document !== 'undefined',\n PositionGhostAbsolutely = IOS,\n CSSFloatProperty = Edge || IE11OrLess ? 'cssFloat' : 'float',\n // This will not pass for IE9, because IE9 DnD only works on anchors\nsupportDraggable = documentExists && !ChromeForAndroid && !IOS && 'draggable' in document.createElement('div'),\n supportCssPointerEvents = function () {\n if (!documentExists) return; // false when <= IE11\n\n if (IE11OrLess) {\n return false;\n }\n\n var el = document.createElement('x');\n el.style.cssText = 'pointer-events:auto';\n return el.style.pointerEvents === 'auto';\n}(),\n _detectDirection = function _detectDirection(el, options) {\n var elCSS = css(el),\n elWidth = parseInt(elCSS.width) - parseInt(elCSS.paddingLeft) - parseInt(elCSS.paddingRight) - parseInt(elCSS.borderLeftWidth) - parseInt(elCSS.borderRightWidth),\n child1 = getChild(el, 0, options),\n child2 = getChild(el, 1, options),\n firstChildCSS = child1 && css(child1),\n secondChildCSS = child2 && css(child2),\n firstChildWidth = firstChildCSS && parseInt(firstChildCSS.marginLeft) + parseInt(firstChildCSS.marginRight) + getRect(child1).width,\n secondChildWidth = secondChildCSS && parseInt(secondChildCSS.marginLeft) + parseInt(secondChildCSS.marginRight) + getRect(child2).width;\n\n if (elCSS.display === 'flex') {\n return elCSS.flexDirection === 'column' || elCSS.flexDirection === 'column-reverse' ? 'vertical' : 'horizontal';\n }\n\n if (elCSS.display === 'grid') {\n return elCSS.gridTemplateColumns.split(' ').length <= 1 ? 'vertical' : 'horizontal';\n }\n\n if (child1 && firstChildCSS[\"float\"] && firstChildCSS[\"float\"] !== 'none') {\n var touchingSideChild2 = firstChildCSS[\"float\"] === 'left' ? 'left' : 'right';\n return child2 && (secondChildCSS.clear === 'both' || secondChildCSS.clear === touchingSideChild2) ? 'vertical' : 'horizontal';\n }\n\n return child1 && (firstChildCSS.display === 'block' || firstChildCSS.display === 'flex' || firstChildCSS.display === 'table' || firstChildCSS.display === 'grid' || firstChildWidth >= elWidth && elCSS[CSSFloatProperty] === 'none' || child2 && elCSS[CSSFloatProperty] === 'none' && firstChildWidth + secondChildWidth > elWidth) ? 'vertical' : 'horizontal';\n},\n _dragElInRowColumn = function _dragElInRowColumn(dragRect, targetRect, vertical) {\n var dragElS1Opp = vertical ? dragRect.left : dragRect.top,\n dragElS2Opp = vertical ? dragRect.right : dragRect.bottom,\n dragElOppLength = vertical ? dragRect.width : dragRect.height,\n targetS1Opp = vertical ? targetRect.left : targetRect.top,\n targetS2Opp = vertical ? targetRect.right : targetRect.bottom,\n targetOppLength = vertical ? targetRect.width : targetRect.height;\n return dragElS1Opp === targetS1Opp || dragElS2Opp === targetS2Opp || dragElS1Opp + dragElOppLength / 2 === targetS1Opp + targetOppLength / 2;\n},\n\n/**\n * Detects first nearest empty sortable to X and Y position using emptyInsertThreshold.\n * @param {Number} x X position\n * @param {Number} y Y position\n * @return {HTMLElement} Element of the first found nearest Sortable\n */\n_detectNearestEmptySortable = function _detectNearestEmptySortable(x, y) {\n var ret;\n sortables.some(function (sortable) {\n if (lastChild(sortable)) return;\n var rect = getRect(sortable),\n threshold = sortable[expando].options.emptyInsertThreshold,\n insideHorizontally = x >= rect.left - threshold && x <= rect.right + threshold,\n insideVertically = y >= rect.top - threshold && y <= rect.bottom + threshold;\n\n if (threshold && insideHorizontally && insideVertically) {\n return ret = sortable;\n }\n });\n return ret;\n},\n _prepareGroup = function _prepareGroup(options) {\n function toFn(value, pull) {\n return function (to, from, dragEl, evt) {\n var sameGroup = to.options.group.name && from.options.group.name && to.options.group.name === from.options.group.name;\n\n if (value == null && (pull || sameGroup)) {\n // Default pull value\n // Default pull and put value if same group\n return true;\n } else if (value == null || value === false) {\n return false;\n } else if (pull && value === 'clone') {\n return value;\n } else if (typeof value === 'function') {\n return toFn(value(to, from, dragEl, evt), pull)(to, from, dragEl, evt);\n } else {\n var otherGroup = (pull ? to : from).options.group.name;\n return value === true || typeof value === 'string' && value === otherGroup || value.join && value.indexOf(otherGroup) > -1;\n }\n };\n }\n\n var group = {};\n var originalGroup = options.group;\n\n if (!originalGroup || _typeof(originalGroup) != 'object') {\n originalGroup = {\n name: originalGroup\n };\n }\n\n group.name = originalGroup.name;\n group.checkPull = toFn(originalGroup.pull, true);\n group.checkPut = toFn(originalGroup.put);\n group.revertClone = originalGroup.revertClone;\n options.group = group;\n},\n _hideGhostForTarget = function _hideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', 'none');\n }\n},\n _unhideGhostForTarget = function _unhideGhostForTarget() {\n if (!supportCssPointerEvents && ghostEl) {\n css(ghostEl, 'display', '');\n }\n}; // #1184 fix - Prevent click event on fallback if dragged but item not changed position\n\n\nif (documentExists) {\n document.addEventListener('click', function (evt) {\n if (ignoreNextClick) {\n evt.preventDefault();\n evt.stopPropagation && evt.stopPropagation();\n evt.stopImmediatePropagation && evt.stopImmediatePropagation();\n ignoreNextClick = false;\n return false;\n }\n }, true);\n}\n\nvar nearestEmptyInsertDetectEvent = function nearestEmptyInsertDetectEvent(evt) {\n if (dragEl) {\n evt = evt.touches ? evt.touches[0] : evt;\n\n var nearest = _detectNearestEmptySortable(evt.clientX, evt.clientY);\n\n if (nearest) {\n // Create imitation event\n var event = {};\n\n for (var i in evt) {\n if (evt.hasOwnProperty(i)) {\n event[i] = evt[i];\n }\n }\n\n event.target = event.rootEl = nearest;\n event.preventDefault = void 0;\n event.stopPropagation = void 0;\n\n nearest[expando]._onDragOver(event);\n }\n }\n};\n\nvar _checkOutsideTargetEl = function _checkOutsideTargetEl(evt) {\n if (dragEl) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target);\n }\n};\n/**\n * @class Sortable\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nfunction Sortable(el, options) {\n if (!(el && el.nodeType && el.nodeType === 1)) {\n throw \"Sortable: `el` must be an HTMLElement, not \".concat({}.toString.call(el));\n }\n\n this.el = el; // root element\n\n this.options = options = _extends({}, options); // Export instance\n\n el[expando] = this;\n var defaults = {\n group: null,\n sort: true,\n disabled: false,\n store: null,\n handle: null,\n draggable: /^[uo]l$/i.test(el.nodeName) ? '>li' : '>*',\n swapThreshold: 1,\n // percentage; 0 <= x <= 1\n invertSwap: false,\n // invert always\n invertedSwapThreshold: null,\n // will be set to same as swapThreshold if default\n removeCloneOnHide: true,\n direction: function direction() {\n return _detectDirection(el, this.options);\n },\n ghostClass: 'sortable-ghost',\n chosenClass: 'sortable-chosen',\n dragClass: 'sortable-drag',\n ignore: 'a, img',\n filter: null,\n preventOnFilter: true,\n animation: 0,\n easing: null,\n setData: function setData(dataTransfer, dragEl) {\n dataTransfer.setData('Text', dragEl.textContent);\n },\n dropBubble: false,\n dragoverBubble: false,\n dataIdAttr: 'data-id',\n delay: 0,\n delayOnTouchOnly: false,\n touchStartThreshold: (Number.parseInt ? Number : window).parseInt(window.devicePixelRatio, 10) || 1,\n forceFallback: false,\n fallbackClass: 'sortable-fallback',\n fallbackOnBody: false,\n fallbackTolerance: 0,\n fallbackOffset: {\n x: 0,\n y: 0\n },\n supportPointer: Sortable.supportPointer !== false && 'PointerEvent' in window,\n emptyInsertThreshold: 5\n };\n PluginManager.initializePlugins(this, el, defaults); // Set default options\n\n for (var name in defaults) {\n !(name in options) && (options[name] = defaults[name]);\n }\n\n _prepareGroup(options); // Bind all private methods\n\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n } // Setup drag mode\n\n\n this.nativeDraggable = options.forceFallback ? false : supportDraggable;\n\n if (this.nativeDraggable) {\n // Touch start threshold cannot be greater than the native dragstart threshold\n this.options.touchStartThreshold = 1;\n } // Bind events\n\n\n if (options.supportPointer) {\n on(el, 'pointerdown', this._onTapStart);\n } else {\n on(el, 'mousedown', this._onTapStart);\n on(el, 'touchstart', this._onTapStart);\n }\n\n if (this.nativeDraggable) {\n on(el, 'dragover', this);\n on(el, 'dragenter', this);\n }\n\n sortables.push(this.el); // Restore sorting\n\n options.store && options.store.get && this.sort(options.store.get(this) || []); // Add animation state manager\n\n _extends(this, AnimationStateManager());\n}\n\nSortable.prototype =\n/** @lends Sortable.prototype */\n{\n constructor: Sortable,\n _isOutsideThisEl: function _isOutsideThisEl(target) {\n if (!this.el.contains(target) && target !== this.el) {\n lastTarget = null;\n }\n },\n _getDirection: function _getDirection(evt, target) {\n return typeof this.options.direction === 'function' ? this.options.direction.call(this, evt, target, dragEl) : this.options.direction;\n },\n _onTapStart: function _onTapStart(\n /** Event|TouchEvent */\n evt) {\n if (!evt.cancelable) return;\n\n var _this = this,\n el = this.el,\n options = this.options,\n preventOnFilter = options.preventOnFilter,\n type = evt.type,\n touch = evt.touches && evt.touches[0] || evt.pointerType && evt.pointerType === 'touch' && evt,\n target = (touch || evt).target,\n originalTarget = evt.target.shadowRoot && (evt.path && evt.path[0] || evt.composedPath && evt.composedPath()[0]) || target,\n filter = options.filter;\n\n _saveInputCheckedState(el); // Don't trigger start event when an element is been dragged, otherwise the evt.oldindex always wrong when set option.group.\n\n\n if (dragEl) {\n return;\n }\n\n if (/mousedown|pointerdown/.test(type) && evt.button !== 0 || options.disabled) {\n return; // only left button and enabled\n } // cancel dnd if original target is content editable\n\n\n if (originalTarget.isContentEditable) {\n return;\n }\n\n target = closest(target, options.draggable, el, false);\n\n if (target && target.animated) {\n return;\n }\n\n if (lastDownEl === target) {\n // Ignoring duplicate `down`\n return;\n } // Get the index of the dragged element within its parent\n\n\n oldIndex = index(target);\n oldDraggableIndex = index(target, options.draggable); // Check filter\n\n if (typeof filter === 'function') {\n if (filter.call(this, evt, target, this)) {\n _dispatchEvent({\n sortable: _this,\n rootEl: originalTarget,\n name: 'filter',\n targetEl: target,\n toEl: el,\n fromEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n } else if (filter) {\n filter = filter.split(',').some(function (criteria) {\n criteria = closest(originalTarget, criteria.trim(), el, false);\n\n if (criteria) {\n _dispatchEvent({\n sortable: _this,\n rootEl: criteria,\n name: 'filter',\n targetEl: target,\n fromEl: el,\n toEl: el\n });\n\n pluginEvent('filter', _this, {\n evt: evt\n });\n return true;\n }\n });\n\n if (filter) {\n preventOnFilter && evt.cancelable && evt.preventDefault();\n return; // cancel dnd\n }\n }\n\n if (options.handle && !closest(originalTarget, options.handle, el, false)) {\n return;\n } // Prepare `dragstart`\n\n\n this._prepareDragStart(evt, touch, target);\n },\n _prepareDragStart: function _prepareDragStart(\n /** Event */\n evt,\n /** Touch */\n touch,\n /** HTMLElement */\n target) {\n var _this = this,\n el = _this.el,\n options = _this.options,\n ownerDocument = el.ownerDocument,\n dragStartFn;\n\n if (target && !dragEl && target.parentNode === el) {\n var dragRect = getRect(target);\n rootEl = el;\n dragEl = target;\n parentEl = dragEl.parentNode;\n nextEl = dragEl.nextSibling;\n lastDownEl = target;\n activeGroup = options.group;\n Sortable.dragged = dragEl;\n tapEvt = {\n target: dragEl,\n clientX: (touch || evt).clientX,\n clientY: (touch || evt).clientY\n };\n tapDistanceLeft = tapEvt.clientX - dragRect.left;\n tapDistanceTop = tapEvt.clientY - dragRect.top;\n this._lastX = (touch || evt).clientX;\n this._lastY = (touch || evt).clientY;\n dragEl.style['will-change'] = 'all';\n\n dragStartFn = function dragStartFn() {\n pluginEvent('delayEnded', _this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n _this._onDrop();\n\n return;\n } // Delayed drag has been triggered\n // we can re-enable the events: touchmove/mousemove\n\n\n _this._disableDelayedDragEvents();\n\n if (!FireFox && _this.nativeDraggable) {\n dragEl.draggable = true;\n } // Bind the events: dragstart/dragend\n\n\n _this._triggerDragStart(evt, touch); // Drag start event\n\n\n _dispatchEvent({\n sortable: _this,\n name: 'choose',\n originalEvent: evt\n }); // Chosen item\n\n\n toggleClass(dragEl, options.chosenClass, true);\n }; // Disable \"draggable\"\n\n\n options.ignore.split(',').forEach(function (criteria) {\n find(dragEl, criteria.trim(), _disableDraggable);\n });\n on(ownerDocument, 'dragover', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mousemove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'touchmove', nearestEmptyInsertDetectEvent);\n on(ownerDocument, 'mouseup', _this._onDrop);\n on(ownerDocument, 'touchend', _this._onDrop);\n on(ownerDocument, 'touchcancel', _this._onDrop); // Make dragEl draggable (must be before delay for FireFox)\n\n if (FireFox && this.nativeDraggable) {\n this.options.touchStartThreshold = 4;\n dragEl.draggable = true;\n }\n\n pluginEvent('delayStart', this, {\n evt: evt\n }); // Delay is impossible for native DnD in Edge or IE\n\n if (options.delay && (!options.delayOnTouchOnly || touch) && (!this.nativeDraggable || !(Edge || IE11OrLess))) {\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n } // If the user moves the pointer or let go the click or touch\n // before the delay has been reached:\n // disable the delayed drag\n\n\n on(ownerDocument, 'mouseup', _this._disableDelayedDrag);\n on(ownerDocument, 'touchend', _this._disableDelayedDrag);\n on(ownerDocument, 'touchcancel', _this._disableDelayedDrag);\n on(ownerDocument, 'mousemove', _this._delayedDragTouchMoveHandler);\n on(ownerDocument, 'touchmove', _this._delayedDragTouchMoveHandler);\n options.supportPointer && on(ownerDocument, 'pointermove', _this._delayedDragTouchMoveHandler);\n _this._dragStartTimer = setTimeout(dragStartFn, options.delay);\n } else {\n dragStartFn();\n }\n }\n },\n _delayedDragTouchMoveHandler: function _delayedDragTouchMoveHandler(\n /** TouchEvent|PointerEvent **/\n e) {\n var touch = e.touches ? e.touches[0] : e;\n\n if (Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) >= Math.floor(this.options.touchStartThreshold / (this.nativeDraggable && window.devicePixelRatio || 1))) {\n this._disableDelayedDrag();\n }\n },\n _disableDelayedDrag: function _disableDelayedDrag() {\n dragEl && _disableDraggable(dragEl);\n clearTimeout(this._dragStartTimer);\n\n this._disableDelayedDragEvents();\n },\n _disableDelayedDragEvents: function _disableDelayedDragEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._disableDelayedDrag);\n off(ownerDocument, 'touchend', this._disableDelayedDrag);\n off(ownerDocument, 'touchcancel', this._disableDelayedDrag);\n off(ownerDocument, 'mousemove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'touchmove', this._delayedDragTouchMoveHandler);\n off(ownerDocument, 'pointermove', this._delayedDragTouchMoveHandler);\n },\n _triggerDragStart: function _triggerDragStart(\n /** Event */\n evt,\n /** Touch */\n touch) {\n touch = touch || evt.pointerType == 'touch' && evt;\n\n if (!this.nativeDraggable || touch) {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._onTouchMove);\n } else if (touch) {\n on(document, 'touchmove', this._onTouchMove);\n } else {\n on(document, 'mousemove', this._onTouchMove);\n }\n } else {\n on(dragEl, 'dragend', this);\n on(rootEl, 'dragstart', this._onDragStart);\n }\n\n try {\n if (document.selection) {\n // Timeout neccessary for IE9\n _nextTick(function () {\n document.selection.empty();\n });\n } else {\n window.getSelection().removeAllRanges();\n }\n } catch (err) {}\n },\n _dragStarted: function _dragStarted(fallback, evt) {\n\n awaitingDragStarted = false;\n\n if (rootEl && dragEl) {\n pluginEvent('dragStarted', this, {\n evt: evt\n });\n\n if (this.nativeDraggable) {\n on(document, 'dragover', _checkOutsideTargetEl);\n }\n\n var options = this.options; // Apply effect\n\n !fallback && toggleClass(dragEl, options.dragClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n Sortable.active = this;\n fallback && this._appendGhost(); // Drag start event\n\n _dispatchEvent({\n sortable: this,\n name: 'start',\n originalEvent: evt\n });\n } else {\n this._nulling();\n }\n },\n _emulateDragOver: function _emulateDragOver() {\n if (touchEvt) {\n this._lastX = touchEvt.clientX;\n this._lastY = touchEvt.clientY;\n\n _hideGhostForTarget();\n\n var target = document.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n var parent = target;\n\n while (target && target.shadowRoot) {\n target = target.shadowRoot.elementFromPoint(touchEvt.clientX, touchEvt.clientY);\n if (target === parent) break;\n parent = target;\n }\n\n dragEl.parentNode[expando]._isOutsideThisEl(target);\n\n if (parent) {\n do {\n if (parent[expando]) {\n var inserted = void 0;\n inserted = parent[expando]._onDragOver({\n clientX: touchEvt.clientX,\n clientY: touchEvt.clientY,\n target: target,\n rootEl: parent\n });\n\n if (inserted && !this.options.dragoverBubble) {\n break;\n }\n }\n\n target = parent; // store last element\n }\n /* jshint boss:true */\n while (parent = parent.parentNode);\n }\n\n _unhideGhostForTarget();\n }\n },\n _onTouchMove: function _onTouchMove(\n /**TouchEvent*/\n evt) {\n if (tapEvt) {\n var options = this.options,\n fallbackTolerance = options.fallbackTolerance,\n fallbackOffset = options.fallbackOffset,\n touch = evt.touches ? evt.touches[0] : evt,\n ghostMatrix = ghostEl && matrix(ghostEl, true),\n scaleX = ghostEl && ghostMatrix && ghostMatrix.a,\n scaleY = ghostEl && ghostMatrix && ghostMatrix.d,\n relativeScrollOffset = PositionGhostAbsolutely && ghostRelativeParent && getRelativeScrollOffset(ghostRelativeParent),\n dx = (touch.clientX - tapEvt.clientX + fallbackOffset.x) / (scaleX || 1) + (relativeScrollOffset ? relativeScrollOffset[0] - ghostRelativeParentInitialScroll[0] : 0) / (scaleX || 1),\n dy = (touch.clientY - tapEvt.clientY + fallbackOffset.y) / (scaleY || 1) + (relativeScrollOffset ? relativeScrollOffset[1] - ghostRelativeParentInitialScroll[1] : 0) / (scaleY || 1); // only set the status to dragging, when we are actually dragging\n\n if (!Sortable.active && !awaitingDragStarted) {\n if (fallbackTolerance && Math.max(Math.abs(touch.clientX - this._lastX), Math.abs(touch.clientY - this._lastY)) < fallbackTolerance) {\n return;\n }\n\n this._onDragStart(evt, true);\n }\n\n if (ghostEl) {\n if (ghostMatrix) {\n ghostMatrix.e += dx - (lastDx || 0);\n ghostMatrix.f += dy - (lastDy || 0);\n } else {\n ghostMatrix = {\n a: 1,\n b: 0,\n c: 0,\n d: 1,\n e: dx,\n f: dy\n };\n }\n\n var cssMatrix = \"matrix(\".concat(ghostMatrix.a, \",\").concat(ghostMatrix.b, \",\").concat(ghostMatrix.c, \",\").concat(ghostMatrix.d, \",\").concat(ghostMatrix.e, \",\").concat(ghostMatrix.f, \")\");\n css(ghostEl, 'webkitTransform', cssMatrix);\n css(ghostEl, 'mozTransform', cssMatrix);\n css(ghostEl, 'msTransform', cssMatrix);\n css(ghostEl, 'transform', cssMatrix);\n lastDx = dx;\n lastDy = dy;\n touchEvt = touch;\n }\n\n evt.cancelable && evt.preventDefault();\n }\n },\n _appendGhost: function _appendGhost() {\n // Bug if using scale(): https://stackoverflow.com/questions/2637058\n // Not being adjusted for\n if (!ghostEl) {\n var container = this.options.fallbackOnBody ? document.body : rootEl,\n rect = getRect(dragEl, true, PositionGhostAbsolutely, true, container),\n options = this.options; // Position absolutely\n\n if (PositionGhostAbsolutely) {\n // Get relatively positioned parent\n ghostRelativeParent = container;\n\n while (css(ghostRelativeParent, 'position') === 'static' && css(ghostRelativeParent, 'transform') === 'none' && ghostRelativeParent !== document) {\n ghostRelativeParent = ghostRelativeParent.parentNode;\n }\n\n if (ghostRelativeParent !== document.body && ghostRelativeParent !== document.documentElement) {\n if (ghostRelativeParent === document) ghostRelativeParent = getWindowScrollingElement();\n rect.top += ghostRelativeParent.scrollTop;\n rect.left += ghostRelativeParent.scrollLeft;\n } else {\n ghostRelativeParent = getWindowScrollingElement();\n }\n\n ghostRelativeParentInitialScroll = getRelativeScrollOffset(ghostRelativeParent);\n }\n\n ghostEl = dragEl.cloneNode(true);\n toggleClass(ghostEl, options.ghostClass, false);\n toggleClass(ghostEl, options.fallbackClass, true);\n toggleClass(ghostEl, options.dragClass, true);\n css(ghostEl, 'transition', '');\n css(ghostEl, 'transform', '');\n css(ghostEl, 'box-sizing', 'border-box');\n css(ghostEl, 'margin', 0);\n css(ghostEl, 'top', rect.top);\n css(ghostEl, 'left', rect.left);\n css(ghostEl, 'width', rect.width);\n css(ghostEl, 'height', rect.height);\n css(ghostEl, 'opacity', '0.8');\n css(ghostEl, 'position', PositionGhostAbsolutely ? 'absolute' : 'fixed');\n css(ghostEl, 'zIndex', '100000');\n css(ghostEl, 'pointerEvents', 'none');\n Sortable.ghost = ghostEl;\n container.appendChild(ghostEl); // Set transform-origin\n\n css(ghostEl, 'transform-origin', tapDistanceLeft / parseInt(ghostEl.style.width) * 100 + '% ' + tapDistanceTop / parseInt(ghostEl.style.height) * 100 + '%');\n }\n },\n _onDragStart: function _onDragStart(\n /**Event*/\n evt,\n /**boolean*/\n fallback) {\n var _this = this;\n\n var dataTransfer = evt.dataTransfer;\n var options = _this.options;\n pluginEvent('dragStart', this, {\n evt: evt\n });\n\n if (Sortable.eventCanceled) {\n this._onDrop();\n\n return;\n }\n\n pluginEvent('setupClone', this);\n\n if (!Sortable.eventCanceled) {\n cloneEl = clone(dragEl);\n cloneEl.draggable = false;\n cloneEl.style['will-change'] = '';\n\n this._hideClone();\n\n toggleClass(cloneEl, this.options.chosenClass, false);\n Sortable.clone = cloneEl;\n } // #1143: IFrame support workaround\n\n\n _this.cloneId = _nextTick(function () {\n pluginEvent('clone', _this);\n if (Sortable.eventCanceled) return;\n\n if (!_this.options.removeCloneOnHide) {\n rootEl.insertBefore(cloneEl, dragEl);\n }\n\n _this._hideClone();\n\n _dispatchEvent({\n sortable: _this,\n name: 'clone'\n });\n });\n !fallback && toggleClass(dragEl, options.dragClass, true); // Set proper drop events\n\n if (fallback) {\n ignoreNextClick = true;\n _this._loopId = setInterval(_this._emulateDragOver, 50);\n } else {\n // Undo what was set in _prepareDragStart before drag started\n off(document, 'mouseup', _this._onDrop);\n off(document, 'touchend', _this._onDrop);\n off(document, 'touchcancel', _this._onDrop);\n\n if (dataTransfer) {\n dataTransfer.effectAllowed = 'move';\n options.setData && options.setData.call(_this, dataTransfer, dragEl);\n }\n\n on(document, 'drop', _this); // #1276 fix:\n\n css(dragEl, 'transform', 'translateZ(0)');\n }\n\n awaitingDragStarted = true;\n _this._dragStartId = _nextTick(_this._dragStarted.bind(_this, fallback, evt));\n on(document, 'selectstart', _this);\n moved = true;\n\n if (Safari) {\n css(document.body, 'user-select', 'none');\n }\n },\n // Returns true - if no further action is needed (either inserted or another condition)\n _onDragOver: function _onDragOver(\n /**Event*/\n evt) {\n var el = this.el,\n target = evt.target,\n dragRect,\n targetRect,\n revert,\n options = this.options,\n group = options.group,\n activeSortable = Sortable.active,\n isOwner = activeGroup === group,\n canSort = options.sort,\n fromSortable = putSortable || activeSortable,\n vertical,\n _this = this,\n completedFired = false;\n\n if (_silent) return;\n\n function dragOverEvent(name, extra) {\n pluginEvent(name, _this, _objectSpread({\n evt: evt,\n isOwner: isOwner,\n axis: vertical ? 'vertical' : 'horizontal',\n revert: revert,\n dragRect: dragRect,\n targetRect: targetRect,\n canSort: canSort,\n fromSortable: fromSortable,\n target: target,\n completed: completed,\n onMove: function onMove(target, after) {\n return _onMove(rootEl, el, dragEl, dragRect, target, getRect(target), evt, after);\n },\n changed: changed\n }, extra));\n } // Capture animation state\n\n\n function capture() {\n dragOverEvent('dragOverAnimationCapture');\n\n _this.captureAnimationState();\n\n if (_this !== fromSortable) {\n fromSortable.captureAnimationState();\n }\n } // Return invocation when dragEl is inserted (or completed)\n\n\n function completed(insertion) {\n dragOverEvent('dragOverCompleted', {\n insertion: insertion\n });\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n } else {\n activeSortable._showClone(_this);\n }\n\n if (_this !== fromSortable) {\n // Set ghost class to new sortable's ghost class\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : activeSortable.options.ghostClass, false);\n toggleClass(dragEl, options.ghostClass, true);\n }\n\n if (putSortable !== _this && _this !== Sortable.active) {\n putSortable = _this;\n } else if (_this === Sortable.active && putSortable) {\n putSortable = null;\n } // Animation\n\n\n if (fromSortable === _this) {\n _this._ignoreWhileAnimating = target;\n }\n\n _this.animateAll(function () {\n dragOverEvent('dragOverAnimationComplete');\n _this._ignoreWhileAnimating = null;\n });\n\n if (_this !== fromSortable) {\n fromSortable.animateAll();\n fromSortable._ignoreWhileAnimating = null;\n }\n } // Null lastTarget if it is not inside a previously swapped element\n\n\n if (target === dragEl && !dragEl.animated || target === el && !target.animated) {\n lastTarget = null;\n } // no bubbling and not fallback\n\n\n if (!options.dragoverBubble && !evt.rootEl && target !== document) {\n dragEl.parentNode[expando]._isOutsideThisEl(evt.target); // Do not detect for empty insert if already inserted\n\n\n !insertion && nearestEmptyInsertDetectEvent(evt);\n }\n\n !options.dragoverBubble && evt.stopPropagation && evt.stopPropagation();\n return completedFired = true;\n } // Call when dragEl has been inserted\n\n\n function changed() {\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n _dispatchEvent({\n sortable: _this,\n name: 'change',\n toEl: el,\n newIndex: newIndex,\n newDraggableIndex: newDraggableIndex,\n originalEvent: evt\n });\n }\n\n if (evt.preventDefault !== void 0) {\n evt.cancelable && evt.preventDefault();\n }\n\n target = closest(target, options.draggable, el, true);\n dragOverEvent('dragOver');\n if (Sortable.eventCanceled) return completedFired;\n\n if (dragEl.contains(evt.target) || target.animated && target.animatingX && target.animatingY || _this._ignoreWhileAnimating === target) {\n return completed(false);\n }\n\n ignoreNextClick = false;\n\n if (activeSortable && !options.disabled && (isOwner ? canSort || (revert = !rootEl.contains(dragEl)) // Reverting item into the original list\n : putSortable === this || (this.lastPutMode = activeGroup.checkPull(this, activeSortable, dragEl, evt)) && group.checkPut(this, activeSortable, dragEl, evt))) {\n vertical = this._getDirection(evt, target) === 'vertical';\n dragRect = getRect(dragEl);\n dragOverEvent('dragOverValid');\n if (Sortable.eventCanceled) return completedFired;\n\n if (revert) {\n parentEl = rootEl; // actualization\n\n capture();\n\n this._hideClone();\n\n dragOverEvent('revert');\n\n if (!Sortable.eventCanceled) {\n if (nextEl) {\n rootEl.insertBefore(dragEl, nextEl);\n } else {\n rootEl.appendChild(dragEl);\n }\n }\n\n return completed(true);\n }\n\n var elLastChild = lastChild(el, options.draggable);\n\n if (!elLastChild || _ghostIsLast(evt, vertical, this) && !elLastChild.animated) {\n // If already at end of list: Do not insert\n if (elLastChild === dragEl) {\n return completed(false);\n } // assign target only if condition is true\n\n\n if (elLastChild && el === evt.target) {\n target = elLastChild;\n }\n\n if (target) {\n targetRect = getRect(target);\n }\n\n if (_onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, !!target) !== false) {\n capture();\n el.appendChild(dragEl);\n parentEl = el; // actualization\n\n changed();\n return completed(true);\n }\n } else if (target.parentNode === el) {\n targetRect = getRect(target);\n var direction = 0,\n targetBeforeFirstSwap,\n differentLevel = dragEl.parentNode !== el,\n differentRowCol = !_dragElInRowColumn(dragEl.animated && dragEl.toRect || dragRect, target.animated && target.toRect || targetRect, vertical),\n side1 = vertical ? 'top' : 'left',\n scrolledPastTop = isScrolledPast(target, 'top', 'top') || isScrolledPast(dragEl, 'top', 'top'),\n scrollBefore = scrolledPastTop ? scrolledPastTop.scrollTop : void 0;\n\n if (lastTarget !== target) {\n targetBeforeFirstSwap = targetRect[side1];\n pastFirstInvertThresh = false;\n isCircumstantialInvert = !differentRowCol && options.invertSwap || differentLevel;\n }\n\n direction = _getSwapDirection(evt, target, targetRect, vertical, differentRowCol ? 1 : options.swapThreshold, options.invertedSwapThreshold == null ? options.swapThreshold : options.invertedSwapThreshold, isCircumstantialInvert, lastTarget === target);\n var sibling;\n\n if (direction !== 0) {\n // Check if target is beside dragEl in respective direction (ignoring hidden elements)\n var dragIndex = index(dragEl);\n\n do {\n dragIndex -= direction;\n sibling = parentEl.children[dragIndex];\n } while (sibling && (css(sibling, 'display') === 'none' || sibling === ghostEl));\n } // If dragEl is already beside target: Do not insert\n\n\n if (direction === 0 || sibling === target) {\n return completed(false);\n }\n\n lastTarget = target;\n lastDirection = direction;\n var nextSibling = target.nextElementSibling,\n after = false;\n after = direction === 1;\n\n var moveVector = _onMove(rootEl, el, dragEl, dragRect, target, targetRect, evt, after);\n\n if (moveVector !== false) {\n if (moveVector === 1 || moveVector === -1) {\n after = moveVector === 1;\n }\n\n _silent = true;\n setTimeout(_unsilent, 30);\n capture();\n\n if (after && !nextSibling) {\n el.appendChild(dragEl);\n } else {\n target.parentNode.insertBefore(dragEl, after ? nextSibling : target);\n } // Undo chrome's scroll adjustment (has no effect on other browsers)\n\n\n if (scrolledPastTop) {\n scrollBy(scrolledPastTop, 0, scrollBefore - scrolledPastTop.scrollTop);\n }\n\n parentEl = dragEl.parentNode; // actualization\n // must be done before animation\n\n if (targetBeforeFirstSwap !== undefined && !isCircumstantialInvert) {\n targetMoveDistance = Math.abs(targetBeforeFirstSwap - getRect(target)[side1]);\n }\n\n changed();\n return completed(true);\n }\n }\n\n if (el.contains(dragEl)) {\n return completed(false);\n }\n }\n\n return false;\n },\n _ignoreWhileAnimating: null,\n _offMoveEvents: function _offMoveEvents() {\n off(document, 'mousemove', this._onTouchMove);\n off(document, 'touchmove', this._onTouchMove);\n off(document, 'pointermove', this._onTouchMove);\n off(document, 'dragover', nearestEmptyInsertDetectEvent);\n off(document, 'mousemove', nearestEmptyInsertDetectEvent);\n off(document, 'touchmove', nearestEmptyInsertDetectEvent);\n },\n _offUpEvents: function _offUpEvents() {\n var ownerDocument = this.el.ownerDocument;\n off(ownerDocument, 'mouseup', this._onDrop);\n off(ownerDocument, 'touchend', this._onDrop);\n off(ownerDocument, 'pointerup', this._onDrop);\n off(ownerDocument, 'touchcancel', this._onDrop);\n off(document, 'selectstart', this);\n },\n _onDrop: function _onDrop(\n /**Event*/\n evt) {\n var el = this.el,\n options = this.options; // Get the index of the dragged element within its parent\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n pluginEvent('drop', this, {\n evt: evt\n });\n parentEl = dragEl && dragEl.parentNode; // Get again after plugin event\n\n newIndex = index(dragEl);\n newDraggableIndex = index(dragEl, options.draggable);\n\n if (Sortable.eventCanceled) {\n this._nulling();\n\n return;\n }\n\n awaitingDragStarted = false;\n isCircumstantialInvert = false;\n pastFirstInvertThresh = false;\n clearInterval(this._loopId);\n clearTimeout(this._dragStartTimer);\n\n _cancelNextTick(this.cloneId);\n\n _cancelNextTick(this._dragStartId); // Unbind events\n\n\n if (this.nativeDraggable) {\n off(document, 'drop', this);\n off(el, 'dragstart', this._onDragStart);\n }\n\n this._offMoveEvents();\n\n this._offUpEvents();\n\n if (Safari) {\n css(document.body, 'user-select', '');\n }\n\n css(dragEl, 'transform', '');\n\n if (evt) {\n if (moved) {\n evt.cancelable && evt.preventDefault();\n !options.dropBubble && evt.stopPropagation();\n }\n\n ghostEl && ghostEl.parentNode && ghostEl.parentNode.removeChild(ghostEl);\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n // Remove clone(s)\n cloneEl && cloneEl.parentNode && cloneEl.parentNode.removeChild(cloneEl);\n }\n\n if (dragEl) {\n if (this.nativeDraggable) {\n off(dragEl, 'dragend', this);\n }\n\n _disableDraggable(dragEl);\n\n dragEl.style['will-change'] = ''; // Remove classes\n // ghostClass is added in dragStarted\n\n if (moved && !awaitingDragStarted) {\n toggleClass(dragEl, putSortable ? putSortable.options.ghostClass : this.options.ghostClass, false);\n }\n\n toggleClass(dragEl, this.options.chosenClass, false); // Drag stop event\n\n _dispatchEvent({\n sortable: this,\n name: 'unchoose',\n toEl: parentEl,\n newIndex: null,\n newDraggableIndex: null,\n originalEvent: evt\n });\n\n if (rootEl !== parentEl) {\n if (newIndex >= 0) {\n // Add event\n _dispatchEvent({\n rootEl: parentEl,\n name: 'add',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n }); // Remove event\n\n\n _dispatchEvent({\n sortable: this,\n name: 'remove',\n toEl: parentEl,\n originalEvent: evt\n }); // drag from one list and drop into another\n\n\n _dispatchEvent({\n rootEl: parentEl,\n name: 'sort',\n toEl: parentEl,\n fromEl: rootEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n\n putSortable && putSortable.save();\n } else {\n if (newIndex !== oldIndex) {\n if (newIndex >= 0) {\n // drag & drop within the same list\n _dispatchEvent({\n sortable: this,\n name: 'update',\n toEl: parentEl,\n originalEvent: evt\n });\n\n _dispatchEvent({\n sortable: this,\n name: 'sort',\n toEl: parentEl,\n originalEvent: evt\n });\n }\n }\n }\n\n if (Sortable.active) {\n /* jshint eqnull:true */\n if (newIndex == null || newIndex === -1) {\n newIndex = oldIndex;\n newDraggableIndex = oldDraggableIndex;\n }\n\n _dispatchEvent({\n sortable: this,\n name: 'end',\n toEl: parentEl,\n originalEvent: evt\n }); // Save sorting\n\n\n this.save();\n }\n }\n }\n\n this._nulling();\n },\n _nulling: function _nulling() {\n pluginEvent('nulling', this);\n rootEl = dragEl = parentEl = ghostEl = nextEl = cloneEl = lastDownEl = cloneHidden = tapEvt = touchEvt = moved = newIndex = newDraggableIndex = oldIndex = oldDraggableIndex = lastTarget = lastDirection = putSortable = activeGroup = Sortable.dragged = Sortable.ghost = Sortable.clone = Sortable.active = null;\n savedInputChecked.forEach(function (el) {\n el.checked = true;\n });\n savedInputChecked.length = lastDx = lastDy = 0;\n },\n handleEvent: function handleEvent(\n /**Event*/\n evt) {\n switch (evt.type) {\n case 'drop':\n case 'dragend':\n this._onDrop(evt);\n\n break;\n\n case 'dragenter':\n case 'dragover':\n if (dragEl) {\n this._onDragOver(evt);\n\n _globalDragOver(evt);\n }\n\n break;\n\n case 'selectstart':\n evt.preventDefault();\n break;\n }\n },\n\n /**\n * Serializes the item into an array of string.\n * @returns {String[]}\n */\n toArray: function toArray() {\n var order = [],\n el,\n children = this.el.children,\n i = 0,\n n = children.length,\n options = this.options;\n\n for (; i < n; i++) {\n el = children[i];\n\n if (closest(el, options.draggable, this.el, false)) {\n order.push(el.getAttribute(options.dataIdAttr) || _generateId(el));\n }\n }\n\n return order;\n },\n\n /**\n * Sorts the elements according to the array.\n * @param {String[]} order order of the items\n */\n sort: function sort(order) {\n var items = {},\n rootEl = this.el;\n this.toArray().forEach(function (id, i) {\n var el = rootEl.children[i];\n\n if (closest(el, this.options.draggable, rootEl, false)) {\n items[id] = el;\n }\n }, this);\n order.forEach(function (id) {\n if (items[id]) {\n rootEl.removeChild(items[id]);\n rootEl.appendChild(items[id]);\n }\n });\n },\n\n /**\n * Save the current sorting\n */\n save: function save() {\n var store = this.options.store;\n store && store.set && store.set(this);\n },\n\n /**\n * For each element in the set, get the first element that matches the selector by testing the element itself and traversing up through its ancestors in the DOM tree.\n * @param {HTMLElement} el\n * @param {String} [selector] default: `options.draggable`\n * @returns {HTMLElement|null}\n */\n closest: function closest$1(el, selector) {\n return closest(el, selector || this.options.draggable, this.el, false);\n },\n\n /**\n * Set/get option\n * @param {string} name\n * @param {*} [value]\n * @returns {*}\n */\n option: function option(name, value) {\n var options = this.options;\n\n if (value === void 0) {\n return options[name];\n } else {\n var modifiedValue = PluginManager.modifyOption(this, name, value);\n\n if (typeof modifiedValue !== 'undefined') {\n options[name] = modifiedValue;\n } else {\n options[name] = value;\n }\n\n if (name === 'group') {\n _prepareGroup(options);\n }\n }\n },\n\n /**\n * Destroy\n */\n destroy: function destroy() {\n pluginEvent('destroy', this);\n var el = this.el;\n el[expando] = null;\n off(el, 'mousedown', this._onTapStart);\n off(el, 'touchstart', this._onTapStart);\n off(el, 'pointerdown', this._onTapStart);\n\n if (this.nativeDraggable) {\n off(el, 'dragover', this);\n off(el, 'dragenter', this);\n } // Remove draggable attributes\n\n\n Array.prototype.forEach.call(el.querySelectorAll('[draggable]'), function (el) {\n el.removeAttribute('draggable');\n });\n\n this._onDrop();\n\n this._disableDelayedDragEvents();\n\n sortables.splice(sortables.indexOf(this.el), 1);\n this.el = el = null;\n },\n _hideClone: function _hideClone() {\n if (!cloneHidden) {\n pluginEvent('hideClone', this);\n if (Sortable.eventCanceled) return;\n css(cloneEl, 'display', 'none');\n\n if (this.options.removeCloneOnHide && cloneEl.parentNode) {\n cloneEl.parentNode.removeChild(cloneEl);\n }\n\n cloneHidden = true;\n }\n },\n _showClone: function _showClone(putSortable) {\n if (putSortable.lastPutMode !== 'clone') {\n this._hideClone();\n\n return;\n }\n\n if (cloneHidden) {\n pluginEvent('showClone', this);\n if (Sortable.eventCanceled) return; // show clone at dragEl or original position\n\n if (rootEl.contains(dragEl) && !this.options.group.revertClone) {\n rootEl.insertBefore(cloneEl, dragEl);\n } else if (nextEl) {\n rootEl.insertBefore(cloneEl, nextEl);\n } else {\n rootEl.appendChild(cloneEl);\n }\n\n if (this.options.group.revertClone) {\n this.animate(dragEl, cloneEl);\n }\n\n css(cloneEl, 'display', '');\n cloneHidden = false;\n }\n }\n};\n\nfunction _globalDragOver(\n/**Event*/\nevt) {\n if (evt.dataTransfer) {\n evt.dataTransfer.dropEffect = 'move';\n }\n\n evt.cancelable && evt.preventDefault();\n}\n\nfunction _onMove(fromEl, toEl, dragEl, dragRect, targetEl, targetRect, originalEvent, willInsertAfter) {\n var evt,\n sortable = fromEl[expando],\n onMoveFn = sortable.options.onMove,\n retVal; // Support for new CustomEvent feature\n\n if (window.CustomEvent && !IE11OrLess && !Edge) {\n evt = new CustomEvent('move', {\n bubbles: true,\n cancelable: true\n });\n } else {\n evt = document.createEvent('Event');\n evt.initEvent('move', true, true);\n }\n\n evt.to = toEl;\n evt.from = fromEl;\n evt.dragged = dragEl;\n evt.draggedRect = dragRect;\n evt.related = targetEl || toEl;\n evt.relatedRect = targetRect || getRect(toEl);\n evt.willInsertAfter = willInsertAfter;\n evt.originalEvent = originalEvent;\n fromEl.dispatchEvent(evt);\n\n if (onMoveFn) {\n retVal = onMoveFn.call(sortable, evt, originalEvent);\n }\n\n return retVal;\n}\n\nfunction _disableDraggable(el) {\n el.draggable = false;\n}\n\nfunction _unsilent() {\n _silent = false;\n}\n\nfunction _ghostIsLast(evt, vertical, sortable) {\n var rect = getRect(lastChild(sortable.el, sortable.options.draggable));\n var spacer = 10;\n return vertical ? evt.clientX > rect.right + spacer || evt.clientX <= rect.right && evt.clientY > rect.bottom && evt.clientX >= rect.left : evt.clientX > rect.right && evt.clientY > rect.top || evt.clientX <= rect.right && evt.clientY > rect.bottom + spacer;\n}\n\nfunction _getSwapDirection(evt, target, targetRect, vertical, swapThreshold, invertedSwapThreshold, invertSwap, isLastTarget) {\n var mouseOnAxis = vertical ? evt.clientY : evt.clientX,\n targetLength = vertical ? targetRect.height : targetRect.width,\n targetS1 = vertical ? targetRect.top : targetRect.left,\n targetS2 = vertical ? targetRect.bottom : targetRect.right,\n invert = false;\n\n if (!invertSwap) {\n // Never invert or create dragEl shadow when target movemenet causes mouse to move past the end of regular swapThreshold\n if (isLastTarget && targetMoveDistance < targetLength * swapThreshold) {\n // multiplied only by swapThreshold because mouse will already be inside target by (1 - threshold) * targetLength / 2\n // check if past first invert threshold on side opposite of lastDirection\n if (!pastFirstInvertThresh && (lastDirection === 1 ? mouseOnAxis > targetS1 + targetLength * invertedSwapThreshold / 2 : mouseOnAxis < targetS2 - targetLength * invertedSwapThreshold / 2)) {\n // past first invert threshold, do not restrict inverted threshold to dragEl shadow\n pastFirstInvertThresh = true;\n }\n\n if (!pastFirstInvertThresh) {\n // dragEl shadow (target move distance shadow)\n if (lastDirection === 1 ? mouseOnAxis < targetS1 + targetMoveDistance // over dragEl shadow\n : mouseOnAxis > targetS2 - targetMoveDistance) {\n return -lastDirection;\n }\n } else {\n invert = true;\n }\n } else {\n // Regular\n if (mouseOnAxis > targetS1 + targetLength * (1 - swapThreshold) / 2 && mouseOnAxis < targetS2 - targetLength * (1 - swapThreshold) / 2) {\n return _getInsertDirection(target);\n }\n }\n }\n\n invert = invert || invertSwap;\n\n if (invert) {\n // Invert of regular\n if (mouseOnAxis < targetS1 + targetLength * invertedSwapThreshold / 2 || mouseOnAxis > targetS2 - targetLength * invertedSwapThreshold / 2) {\n return mouseOnAxis > targetS1 + targetLength / 2 ? 1 : -1;\n }\n }\n\n return 0;\n}\n/**\n * Gets the direction dragEl must be swapped relative to target in order to make it\n * seem that dragEl has been \"inserted\" into that element's position\n * @param {HTMLElement} target The target whose position dragEl is being inserted at\n * @return {Number} Direction dragEl must be swapped\n */\n\n\nfunction _getInsertDirection(target) {\n if (index(dragEl) < index(target)) {\n return 1;\n } else {\n return -1;\n }\n}\n/**\n * Generate id\n * @param {HTMLElement} el\n * @returns {String}\n * @private\n */\n\n\nfunction _generateId(el) {\n var str = el.tagName + el.className + el.src + el.href + el.textContent,\n i = str.length,\n sum = 0;\n\n while (i--) {\n sum += str.charCodeAt(i);\n }\n\n return sum.toString(36);\n}\n\nfunction _saveInputCheckedState(root) {\n savedInputChecked.length = 0;\n var inputs = root.getElementsByTagName('input');\n var idx = inputs.length;\n\n while (idx--) {\n var el = inputs[idx];\n el.checked && savedInputChecked.push(el);\n }\n}\n\nfunction _nextTick(fn) {\n return setTimeout(fn, 0);\n}\n\nfunction _cancelNextTick(id) {\n return clearTimeout(id);\n} // Fixed #973:\n\n\nif (documentExists) {\n on(document, 'touchmove', function (evt) {\n if ((Sortable.active || awaitingDragStarted) && evt.cancelable) {\n evt.preventDefault();\n }\n });\n} // Export utils\n\n\nSortable.utils = {\n on: on,\n off: off,\n css: css,\n find: find,\n is: function is(el, selector) {\n return !!closest(el, selector, el, false);\n },\n extend: extend,\n throttle: throttle,\n closest: closest,\n toggleClass: toggleClass,\n clone: clone,\n index: index,\n nextTick: _nextTick,\n cancelNextTick: _cancelNextTick,\n detectDirection: _detectDirection,\n getChild: getChild\n};\n/**\n * Get the Sortable instance of an element\n * @param {HTMLElement} element The element\n * @return {Sortable|undefined} The instance of Sortable\n */\n\nSortable.get = function (element) {\n return element[expando];\n};\n/**\n * Mount a plugin to Sortable\n * @param {...SortablePlugin|SortablePlugin[]} plugins Plugins being mounted\n */\n\n\nSortable.mount = function () {\n for (var _len = arguments.length, plugins = new Array(_len), _key = 0; _key < _len; _key++) {\n plugins[_key] = arguments[_key];\n }\n\n if (plugins[0].constructor === Array) plugins = plugins[0];\n plugins.forEach(function (plugin) {\n if (!plugin.prototype || !plugin.prototype.constructor) {\n throw \"Sortable: Mounted plugin must be a constructor function, not \".concat({}.toString.call(plugin));\n }\n\n if (plugin.utils) Sortable.utils = _objectSpread({}, Sortable.utils, plugin.utils);\n PluginManager.mount(plugin);\n });\n};\n/**\n * Create sortable instance\n * @param {HTMLElement} el\n * @param {Object} [options]\n */\n\n\nSortable.create = function (el, options) {\n return new Sortable(el, options);\n}; // Export\n\n\nSortable.version = version;\n\nvar autoScrolls = [],\n scrollEl,\n scrollRootEl,\n scrolling = false,\n lastAutoScrollX,\n lastAutoScrollY,\n touchEvt$1,\n pointerElemChangedInterval;\n\nfunction AutoScrollPlugin() {\n function AutoScroll() {\n this.defaults = {\n scroll: true,\n scrollSensitivity: 30,\n scrollSpeed: 10,\n bubbleScroll: true\n }; // Bind all private methods\n\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n }\n\n AutoScroll.prototype = {\n dragStarted: function dragStarted(_ref) {\n var originalEvent = _ref.originalEvent;\n\n if (this.sortable.nativeDraggable) {\n on(document, 'dragover', this._handleAutoScroll);\n } else {\n if (this.options.supportPointer) {\n on(document, 'pointermove', this._handleFallbackAutoScroll);\n } else if (originalEvent.touches) {\n on(document, 'touchmove', this._handleFallbackAutoScroll);\n } else {\n on(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref2) {\n var originalEvent = _ref2.originalEvent;\n\n // For when bubbling is canceled and using fallback (fallback 'touchmove' always reached)\n if (!this.options.dragOverBubble && !originalEvent.rootEl) {\n this._handleAutoScroll(originalEvent);\n }\n },\n drop: function drop() {\n if (this.sortable.nativeDraggable) {\n off(document, 'dragover', this._handleAutoScroll);\n } else {\n off(document, 'pointermove', this._handleFallbackAutoScroll);\n off(document, 'touchmove', this._handleFallbackAutoScroll);\n off(document, 'mousemove', this._handleFallbackAutoScroll);\n }\n\n clearPointerElemChangedInterval();\n clearAutoScrolls();\n cancelThrottle();\n },\n nulling: function nulling() {\n touchEvt$1 = scrollRootEl = scrollEl = scrolling = pointerElemChangedInterval = lastAutoScrollX = lastAutoScrollY = null;\n autoScrolls.length = 0;\n },\n _handleFallbackAutoScroll: function _handleFallbackAutoScroll(evt) {\n this._handleAutoScroll(evt, true);\n },\n _handleAutoScroll: function _handleAutoScroll(evt, fallback) {\n var _this = this;\n\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n elem = document.elementFromPoint(x, y);\n touchEvt$1 = evt; // IE does not seem to have native autoscroll,\n // Edge's autoscroll seems too conditional,\n // MACOS Safari does not have autoscroll,\n // Firefox and Chrome are good\n\n if (fallback || Edge || IE11OrLess || Safari) {\n autoScroll(evt, this.options, elem, fallback); // Listener for pointer element change\n\n var ogElemScroller = getParentAutoScrollElement(elem, true);\n\n if (scrolling && (!pointerElemChangedInterval || x !== lastAutoScrollX || y !== lastAutoScrollY)) {\n pointerElemChangedInterval && clearPointerElemChangedInterval(); // Detect for pointer elem change, emulating native DnD behaviour\n\n pointerElemChangedInterval = setInterval(function () {\n var newElem = getParentAutoScrollElement(document.elementFromPoint(x, y), true);\n\n if (newElem !== ogElemScroller) {\n ogElemScroller = newElem;\n clearAutoScrolls();\n }\n\n autoScroll(evt, _this.options, newElem, fallback);\n }, 10);\n lastAutoScrollX = x;\n lastAutoScrollY = y;\n }\n } else {\n // if DnD is enabled (and browser has good autoscrolling), first autoscroll will already scroll, so get parent autoscroll of first autoscroll\n if (!this.options.bubbleScroll || getParentAutoScrollElement(elem, true) === getWindowScrollingElement()) {\n clearAutoScrolls();\n return;\n }\n\n autoScroll(evt, this.options, getParentAutoScrollElement(elem, false), false);\n }\n }\n };\n return _extends(AutoScroll, {\n pluginName: 'scroll',\n initializeByDefault: true\n });\n}\n\nfunction clearAutoScrolls() {\n autoScrolls.forEach(function (autoScroll) {\n clearInterval(autoScroll.pid);\n });\n autoScrolls = [];\n}\n\nfunction clearPointerElemChangedInterval() {\n clearInterval(pointerElemChangedInterval);\n}\n\nvar autoScroll = throttle(function (evt, options, rootEl, isFallback) {\n // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=505521\n if (!options.scroll) return;\n var x = (evt.touches ? evt.touches[0] : evt).clientX,\n y = (evt.touches ? evt.touches[0] : evt).clientY,\n sens = options.scrollSensitivity,\n speed = options.scrollSpeed,\n winScroller = getWindowScrollingElement();\n var scrollThisInstance = false,\n scrollCustomFn; // New scroll root, set scrollEl\n\n if (scrollRootEl !== rootEl) {\n scrollRootEl = rootEl;\n clearAutoScrolls();\n scrollEl = options.scroll;\n scrollCustomFn = options.scrollFn;\n\n if (scrollEl === true) {\n scrollEl = getParentAutoScrollElement(rootEl, true);\n }\n }\n\n var layersOut = 0;\n var currentParent = scrollEl;\n\n do {\n var el = currentParent,\n rect = getRect(el),\n top = rect.top,\n bottom = rect.bottom,\n left = rect.left,\n right = rect.right,\n width = rect.width,\n height = rect.height,\n canScrollX = void 0,\n canScrollY = void 0,\n scrollWidth = el.scrollWidth,\n scrollHeight = el.scrollHeight,\n elCSS = css(el),\n scrollPosX = el.scrollLeft,\n scrollPosY = el.scrollTop;\n\n if (el === winScroller) {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll' || elCSS.overflowX === 'visible');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll' || elCSS.overflowY === 'visible');\n } else {\n canScrollX = width < scrollWidth && (elCSS.overflowX === 'auto' || elCSS.overflowX === 'scroll');\n canScrollY = height < scrollHeight && (elCSS.overflowY === 'auto' || elCSS.overflowY === 'scroll');\n }\n\n var vx = canScrollX && (Math.abs(right - x) <= sens && scrollPosX + width < scrollWidth) - (Math.abs(left - x) <= sens && !!scrollPosX);\n var vy = canScrollY && (Math.abs(bottom - y) <= sens && scrollPosY + height < scrollHeight) - (Math.abs(top - y) <= sens && !!scrollPosY);\n\n if (!autoScrolls[layersOut]) {\n for (var i = 0; i <= layersOut; i++) {\n if (!autoScrolls[i]) {\n autoScrolls[i] = {};\n }\n }\n }\n\n if (autoScrolls[layersOut].vx != vx || autoScrolls[layersOut].vy != vy || autoScrolls[layersOut].el !== el) {\n autoScrolls[layersOut].el = el;\n autoScrolls[layersOut].vx = vx;\n autoScrolls[layersOut].vy = vy;\n clearInterval(autoScrolls[layersOut].pid);\n\n if (vx != 0 || vy != 0) {\n scrollThisInstance = true;\n /* jshint loopfunc:true */\n\n autoScrolls[layersOut].pid = setInterval(function () {\n // emulate drag over during autoscroll (fallback), emulating native DnD behaviour\n if (isFallback && this.layer === 0) {\n Sortable.active._onTouchMove(touchEvt$1); // To move ghost if it is positioned absolutely\n\n }\n\n var scrollOffsetY = autoScrolls[this.layer].vy ? autoScrolls[this.layer].vy * speed : 0;\n var scrollOffsetX = autoScrolls[this.layer].vx ? autoScrolls[this.layer].vx * speed : 0;\n\n if (typeof scrollCustomFn === 'function') {\n if (scrollCustomFn.call(Sortable.dragged.parentNode[expando], scrollOffsetX, scrollOffsetY, evt, touchEvt$1, autoScrolls[this.layer].el) !== 'continue') {\n return;\n }\n }\n\n scrollBy(autoScrolls[this.layer].el, scrollOffsetX, scrollOffsetY);\n }.bind({\n layer: layersOut\n }), 24);\n }\n }\n\n layersOut++;\n } while (options.bubbleScroll && currentParent !== winScroller && (currentParent = getParentAutoScrollElement(currentParent, false)));\n\n scrolling = scrollThisInstance; // in case another function catches scrolling as false in between when it is not\n}, 30);\n\nvar drop = function drop(_ref) {\n var originalEvent = _ref.originalEvent,\n putSortable = _ref.putSortable,\n dragEl = _ref.dragEl,\n activeSortable = _ref.activeSortable,\n dispatchSortableEvent = _ref.dispatchSortableEvent,\n hideGhostForTarget = _ref.hideGhostForTarget,\n unhideGhostForTarget = _ref.unhideGhostForTarget;\n if (!originalEvent) return;\n var toSortable = putSortable || activeSortable;\n hideGhostForTarget();\n var touch = originalEvent.changedTouches && originalEvent.changedTouches.length ? originalEvent.changedTouches[0] : originalEvent;\n var target = document.elementFromPoint(touch.clientX, touch.clientY);\n unhideGhostForTarget();\n\n if (toSortable && !toSortable.el.contains(target)) {\n dispatchSortableEvent('spill');\n this.onSpill({\n dragEl: dragEl,\n putSortable: putSortable\n });\n }\n};\n\nfunction Revert() {}\n\nRevert.prototype = {\n startIndex: null,\n dragStart: function dragStart(_ref2) {\n var oldDraggableIndex = _ref2.oldDraggableIndex;\n this.startIndex = oldDraggableIndex;\n },\n onSpill: function onSpill(_ref3) {\n var dragEl = _ref3.dragEl,\n putSortable = _ref3.putSortable;\n this.sortable.captureAnimationState();\n\n if (putSortable) {\n putSortable.captureAnimationState();\n }\n\n var nextSibling = getChild(this.sortable.el, this.startIndex, this.options);\n\n if (nextSibling) {\n this.sortable.el.insertBefore(dragEl, nextSibling);\n } else {\n this.sortable.el.appendChild(dragEl);\n }\n\n this.sortable.animateAll();\n\n if (putSortable) {\n putSortable.animateAll();\n }\n },\n drop: drop\n};\n\n_extends(Revert, {\n pluginName: 'revertOnSpill'\n});\n\nfunction Remove() {}\n\nRemove.prototype = {\n onSpill: function onSpill(_ref4) {\n var dragEl = _ref4.dragEl,\n putSortable = _ref4.putSortable;\n var parentSortable = putSortable || this.sortable;\n parentSortable.captureAnimationState();\n dragEl.parentNode && dragEl.parentNode.removeChild(dragEl);\n parentSortable.animateAll();\n },\n drop: drop\n};\n\n_extends(Remove, {\n pluginName: 'removeOnSpill'\n});\n\nvar lastSwapEl;\n\nfunction SwapPlugin() {\n function Swap() {\n this.defaults = {\n swapClass: 'sortable-swap-highlight'\n };\n }\n\n Swap.prototype = {\n dragStart: function dragStart(_ref) {\n var dragEl = _ref.dragEl;\n lastSwapEl = dragEl;\n },\n dragOverValid: function dragOverValid(_ref2) {\n var completed = _ref2.completed,\n target = _ref2.target,\n onMove = _ref2.onMove,\n activeSortable = _ref2.activeSortable,\n changed = _ref2.changed,\n cancel = _ref2.cancel;\n if (!activeSortable.options.swap) return;\n var el = this.sortable.el,\n options = this.options;\n\n if (target && target !== el) {\n var prevSwapEl = lastSwapEl;\n\n if (onMove(target) !== false) {\n toggleClass(target, options.swapClass, true);\n lastSwapEl = target;\n } else {\n lastSwapEl = null;\n }\n\n if (prevSwapEl && prevSwapEl !== lastSwapEl) {\n toggleClass(prevSwapEl, options.swapClass, false);\n }\n }\n\n changed();\n completed(true);\n cancel();\n },\n drop: function drop(_ref3) {\n var activeSortable = _ref3.activeSortable,\n putSortable = _ref3.putSortable,\n dragEl = _ref3.dragEl;\n var toSortable = putSortable || this.sortable;\n var options = this.options;\n lastSwapEl && toggleClass(lastSwapEl, options.swapClass, false);\n\n if (lastSwapEl && (options.swap || putSortable && putSortable.options.swap)) {\n if (dragEl !== lastSwapEl) {\n toSortable.captureAnimationState();\n if (toSortable !== activeSortable) activeSortable.captureAnimationState();\n swapNodes(dragEl, lastSwapEl);\n toSortable.animateAll();\n if (toSortable !== activeSortable) activeSortable.animateAll();\n }\n }\n },\n nulling: function nulling() {\n lastSwapEl = null;\n }\n };\n return _extends(Swap, {\n pluginName: 'swap',\n eventProperties: function eventProperties() {\n return {\n swapItem: lastSwapEl\n };\n }\n });\n}\n\nfunction swapNodes(n1, n2) {\n var p1 = n1.parentNode,\n p2 = n2.parentNode,\n i1,\n i2;\n if (!p1 || !p2 || p1.isEqualNode(n2) || p2.isEqualNode(n1)) return;\n i1 = index(n1);\n i2 = index(n2);\n\n if (p1.isEqualNode(p2) && i1 < i2) {\n i2++;\n }\n\n p1.insertBefore(n2, p1.children[i1]);\n p2.insertBefore(n1, p2.children[i2]);\n}\n\nvar multiDragElements = [],\n multiDragClones = [],\n lastMultiDragSelect,\n // for selection with modifier key down (SHIFT)\nmultiDragSortable,\n initialFolding = false,\n // Initial multi-drag fold when drag started\nfolding = false,\n // Folding any other time\ndragStarted = false,\n dragEl$1,\n clonesFromRect,\n clonesHidden;\n\nfunction MultiDragPlugin() {\n function MultiDrag(sortable) {\n // Bind all private methods\n for (var fn in this) {\n if (fn.charAt(0) === '_' && typeof this[fn] === 'function') {\n this[fn] = this[fn].bind(this);\n }\n }\n\n if (sortable.options.supportPointer) {\n on(document, 'pointerup', this._deselectMultiDrag);\n } else {\n on(document, 'mouseup', this._deselectMultiDrag);\n on(document, 'touchend', this._deselectMultiDrag);\n }\n\n on(document, 'keydown', this._checkKeyDown);\n on(document, 'keyup', this._checkKeyUp);\n this.defaults = {\n selectedClass: 'sortable-selected',\n multiDragKey: null,\n setData: function setData(dataTransfer, dragEl) {\n var data = '';\n\n if (multiDragElements.length && multiDragSortable === sortable) {\n multiDragElements.forEach(function (multiDragElement, i) {\n data += (!i ? '' : ', ') + multiDragElement.textContent;\n });\n } else {\n data = dragEl.textContent;\n }\n\n dataTransfer.setData('Text', data);\n }\n };\n }\n\n MultiDrag.prototype = {\n multiDragKeyDown: false,\n isMultiDrag: false,\n delayStartGlobal: function delayStartGlobal(_ref) {\n var dragged = _ref.dragEl;\n dragEl$1 = dragged;\n },\n delayEnded: function delayEnded() {\n this.isMultiDrag = ~multiDragElements.indexOf(dragEl$1);\n },\n setupClone: function setupClone(_ref2) {\n var sortable = _ref2.sortable,\n cancel = _ref2.cancel;\n if (!this.isMultiDrag) return;\n\n for (var i = 0; i < multiDragElements.length; i++) {\n multiDragClones.push(clone(multiDragElements[i]));\n multiDragClones[i].sortableIndex = multiDragElements[i].sortableIndex;\n multiDragClones[i].draggable = false;\n multiDragClones[i].style['will-change'] = '';\n toggleClass(multiDragClones[i], this.options.selectedClass, false);\n multiDragElements[i] === dragEl$1 && toggleClass(multiDragClones[i], this.options.chosenClass, false);\n }\n\n sortable._hideClone();\n\n cancel();\n },\n clone: function clone(_ref3) {\n var sortable = _ref3.sortable,\n rootEl = _ref3.rootEl,\n dispatchSortableEvent = _ref3.dispatchSortableEvent,\n cancel = _ref3.cancel;\n if (!this.isMultiDrag) return;\n\n if (!this.options.removeCloneOnHide) {\n if (multiDragElements.length && multiDragSortable === sortable) {\n insertMultiDragClones(true, rootEl);\n dispatchSortableEvent('clone');\n cancel();\n }\n }\n },\n showClone: function showClone(_ref4) {\n var cloneNowShown = _ref4.cloneNowShown,\n rootEl = _ref4.rootEl,\n cancel = _ref4.cancel;\n if (!this.isMultiDrag) return;\n insertMultiDragClones(false, rootEl);\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', '');\n });\n cloneNowShown();\n clonesHidden = false;\n cancel();\n },\n hideClone: function hideClone(_ref5) {\n var _this = this;\n\n var sortable = _ref5.sortable,\n cloneNowHidden = _ref5.cloneNowHidden,\n cancel = _ref5.cancel;\n if (!this.isMultiDrag) return;\n multiDragClones.forEach(function (clone) {\n css(clone, 'display', 'none');\n\n if (_this.options.removeCloneOnHide && clone.parentNode) {\n clone.parentNode.removeChild(clone);\n }\n });\n cloneNowHidden();\n clonesHidden = true;\n cancel();\n },\n dragStartGlobal: function dragStartGlobal(_ref6) {\n var sortable = _ref6.sortable;\n\n if (!this.isMultiDrag && multiDragSortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n }\n\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.sortableIndex = index(multiDragElement);\n }); // Sort multi-drag elements\n\n multiDragElements = multiDragElements.sort(function (a, b) {\n return a.sortableIndex - b.sortableIndex;\n });\n dragStarted = true;\n },\n dragStarted: function dragStarted(_ref7) {\n var _this2 = this;\n\n var sortable = _ref7.sortable;\n if (!this.isMultiDrag) return;\n\n if (this.options.sort) {\n // Capture rects,\n // hide multi drag elements (by positioning them absolute),\n // set multi drag elements rects to dragRect,\n // show multi drag elements,\n // animate to rects,\n // unset rects & remove from DOM\n sortable.captureAnimationState();\n\n if (this.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n css(multiDragElement, 'position', 'absolute');\n });\n var dragRect = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRect);\n });\n folding = true;\n initialFolding = true;\n }\n }\n\n sortable.animateAll(function () {\n folding = false;\n initialFolding = false;\n\n if (_this2.options.animation) {\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n } // Remove all auxiliary multidrag items from el, if sorting enabled\n\n\n if (_this2.options.sort) {\n removeMultiDragElements();\n }\n });\n },\n dragOver: function dragOver(_ref8) {\n var target = _ref8.target,\n completed = _ref8.completed,\n cancel = _ref8.cancel;\n\n if (folding && ~multiDragElements.indexOf(target)) {\n completed(false);\n cancel();\n }\n },\n revert: function revert(_ref9) {\n var fromSortable = _ref9.fromSortable,\n rootEl = _ref9.rootEl,\n sortable = _ref9.sortable,\n dragRect = _ref9.dragRect;\n\n if (multiDragElements.length > 1) {\n // Setup unfold animation\n multiDragElements.forEach(function (multiDragElement) {\n sortable.addAnimationState({\n target: multiDragElement,\n rect: folding ? getRect(multiDragElement) : dragRect\n });\n unsetRect(multiDragElement);\n multiDragElement.fromRect = dragRect;\n fromSortable.removeAnimationState(multiDragElement);\n });\n folding = false;\n insertMultiDragElements(!this.options.removeCloneOnHide, rootEl);\n }\n },\n dragOverCompleted: function dragOverCompleted(_ref10) {\n var sortable = _ref10.sortable,\n isOwner = _ref10.isOwner,\n insertion = _ref10.insertion,\n activeSortable = _ref10.activeSortable,\n parentEl = _ref10.parentEl,\n putSortable = _ref10.putSortable;\n var options = this.options;\n\n if (insertion) {\n // Clones must be hidden before folding animation to capture dragRectAbsolute properly\n if (isOwner) {\n activeSortable._hideClone();\n }\n\n initialFolding = false; // If leaving sort:false root, or already folding - Fold to new location\n\n if (options.animation && multiDragElements.length > 1 && (folding || !isOwner && !activeSortable.options.sort && !putSortable)) {\n // Fold: Set all multi drag elements's rects to dragEl's rect when multi-drag elements are invisible\n var dragRectAbsolute = getRect(dragEl$1, false, true, true);\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n setRect(multiDragElement, dragRectAbsolute); // Move element(s) to end of parentEl so that it does not interfere with multi-drag clones insertion if they are inserted\n // while folding, and so that we can capture them again because old sortable will no longer be fromSortable\n\n parentEl.appendChild(multiDragElement);\n });\n folding = true;\n } // Clones must be shown (and check to remove multi drags) after folding when interfering multiDragElements are moved out\n\n\n if (!isOwner) {\n // Only remove if not folding (folding will remove them anyways)\n if (!folding) {\n removeMultiDragElements();\n }\n\n if (multiDragElements.length > 1) {\n var clonesHiddenBefore = clonesHidden;\n\n activeSortable._showClone(sortable); // Unfold animation for clones if showing from hidden\n\n\n if (activeSortable.options.animation && !clonesHidden && clonesHiddenBefore) {\n multiDragClones.forEach(function (clone) {\n activeSortable.addAnimationState({\n target: clone,\n rect: clonesFromRect\n });\n clone.fromRect = clonesFromRect;\n clone.thisAnimationDuration = null;\n });\n }\n } else {\n activeSortable._showClone(sortable);\n }\n }\n }\n },\n dragOverAnimationCapture: function dragOverAnimationCapture(_ref11) {\n var dragRect = _ref11.dragRect,\n isOwner = _ref11.isOwner,\n activeSortable = _ref11.activeSortable;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n });\n\n if (activeSortable.options.animation && !isOwner && activeSortable.multiDrag.isMultiDrag) {\n clonesFromRect = _extends({}, dragRect);\n var dragMatrix = matrix(dragEl$1, true);\n clonesFromRect.top -= dragMatrix.f;\n clonesFromRect.left -= dragMatrix.e;\n }\n },\n dragOverAnimationComplete: function dragOverAnimationComplete() {\n if (folding) {\n folding = false;\n removeMultiDragElements();\n }\n },\n drop: function drop(_ref12) {\n var evt = _ref12.originalEvent,\n rootEl = _ref12.rootEl,\n parentEl = _ref12.parentEl,\n sortable = _ref12.sortable,\n dispatchSortableEvent = _ref12.dispatchSortableEvent,\n oldIndex = _ref12.oldIndex,\n putSortable = _ref12.putSortable;\n var toSortable = putSortable || this.sortable;\n if (!evt) return;\n var options = this.options,\n children = parentEl.children; // Multi-drag selection\n\n if (!dragStarted) {\n if (options.multiDragKey && !this.multiDragKeyDown) {\n this._deselectMultiDrag();\n }\n\n toggleClass(dragEl$1, options.selectedClass, !~multiDragElements.indexOf(dragEl$1));\n\n if (!~multiDragElements.indexOf(dragEl$1)) {\n multiDragElements.push(dragEl$1);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: dragEl$1,\n originalEvt: evt\n }); // Modifier activated, select from last to dragEl\n\n if (evt.shiftKey && lastMultiDragSelect && sortable.el.contains(lastMultiDragSelect)) {\n var lastIndex = index(lastMultiDragSelect),\n currentIndex = index(dragEl$1);\n\n if (~lastIndex && ~currentIndex && lastIndex !== currentIndex) {\n // Must include lastMultiDragSelect (select it), in case modified selection from no selection\n // (but previous selection existed)\n var n, i;\n\n if (currentIndex > lastIndex) {\n i = lastIndex;\n n = currentIndex;\n } else {\n i = currentIndex;\n n = lastIndex + 1;\n }\n\n for (; i < n; i++) {\n if (~multiDragElements.indexOf(children[i])) continue;\n toggleClass(children[i], options.selectedClass, true);\n multiDragElements.push(children[i]);\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'select',\n targetEl: children[i],\n originalEvt: evt\n });\n }\n }\n } else {\n lastMultiDragSelect = dragEl$1;\n }\n\n multiDragSortable = toSortable;\n } else {\n multiDragElements.splice(multiDragElements.indexOf(dragEl$1), 1);\n lastMultiDragSelect = null;\n dispatchEvent({\n sortable: sortable,\n rootEl: rootEl,\n name: 'deselect',\n targetEl: dragEl$1,\n originalEvt: evt\n });\n }\n } // Multi-drag drop\n\n\n if (dragStarted && this.isMultiDrag) {\n // Do not \"unfold\" after around dragEl if reverted\n if ((parentEl[expando].options.sort || parentEl !== rootEl) && multiDragElements.length > 1) {\n var dragRect = getRect(dragEl$1),\n multiDragIndex = index(dragEl$1, ':not(.' + this.options.selectedClass + ')');\n if (!initialFolding && options.animation) dragEl$1.thisAnimationDuration = null;\n toSortable.captureAnimationState();\n\n if (!initialFolding) {\n if (options.animation) {\n dragEl$1.fromRect = dragRect;\n multiDragElements.forEach(function (multiDragElement) {\n multiDragElement.thisAnimationDuration = null;\n\n if (multiDragElement !== dragEl$1) {\n var rect = folding ? getRect(multiDragElement) : dragRect;\n multiDragElement.fromRect = rect; // Prepare unfold animation\n\n toSortable.addAnimationState({\n target: multiDragElement,\n rect: rect\n });\n }\n });\n } // Multi drag elements are not necessarily removed from the DOM on drop, so to reinsert\n // properly they must all be removed\n\n\n removeMultiDragElements();\n multiDragElements.forEach(function (multiDragElement) {\n if (children[multiDragIndex]) {\n parentEl.insertBefore(multiDragElement, children[multiDragIndex]);\n } else {\n parentEl.appendChild(multiDragElement);\n }\n\n multiDragIndex++;\n }); // If initial folding is done, the elements may have changed position because they are now\n // unfolding around dragEl, even though dragEl may not have his index changed, so update event\n // must be fired here as Sortable will not.\n\n if (oldIndex === index(dragEl$1)) {\n var update = false;\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement.sortableIndex !== index(multiDragElement)) {\n update = true;\n return;\n }\n });\n\n if (update) {\n dispatchSortableEvent('update');\n }\n }\n } // Must be done after capturing individual rects (scroll bar)\n\n\n multiDragElements.forEach(function (multiDragElement) {\n unsetRect(multiDragElement);\n });\n toSortable.animateAll();\n }\n\n multiDragSortable = toSortable;\n } // Remove clones if necessary\n\n\n if (rootEl === parentEl || putSortable && putSortable.lastPutMode !== 'clone') {\n multiDragClones.forEach(function (clone) {\n clone.parentNode && clone.parentNode.removeChild(clone);\n });\n }\n },\n nullingGlobal: function nullingGlobal() {\n this.isMultiDrag = dragStarted = false;\n multiDragClones.length = 0;\n },\n destroyGlobal: function destroyGlobal() {\n this._deselectMultiDrag();\n\n off(document, 'pointerup', this._deselectMultiDrag);\n off(document, 'mouseup', this._deselectMultiDrag);\n off(document, 'touchend', this._deselectMultiDrag);\n off(document, 'keydown', this._checkKeyDown);\n off(document, 'keyup', this._checkKeyUp);\n },\n _deselectMultiDrag: function _deselectMultiDrag(evt) {\n if (typeof dragStarted !== \"undefined\" && dragStarted) return; // Only deselect if selection is in this sortable\n\n if (multiDragSortable !== this.sortable) return; // Only deselect if target is not item in this sortable\n\n if (evt && closest(evt.target, this.options.draggable, this.sortable.el, false)) return; // Only deselect if left click\n\n if (evt && evt.button !== 0) return;\n\n while (multiDragElements.length) {\n var el = multiDragElements[0];\n toggleClass(el, this.options.selectedClass, false);\n multiDragElements.shift();\n dispatchEvent({\n sortable: this.sortable,\n rootEl: this.sortable.el,\n name: 'deselect',\n targetEl: el,\n originalEvt: evt\n });\n }\n },\n _checkKeyDown: function _checkKeyDown(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = true;\n }\n },\n _checkKeyUp: function _checkKeyUp(evt) {\n if (evt.key === this.options.multiDragKey) {\n this.multiDragKeyDown = false;\n }\n }\n };\n return _extends(MultiDrag, {\n // Static methods & properties\n pluginName: 'multiDrag',\n utils: {\n /**\r\n * Selects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be selected\r\n */\n select: function select(el) {\n var sortable = el.parentNode[expando];\n if (!sortable || !sortable.options.multiDrag || ~multiDragElements.indexOf(el)) return;\n\n if (multiDragSortable && multiDragSortable !== sortable) {\n multiDragSortable.multiDrag._deselectMultiDrag();\n\n multiDragSortable = sortable;\n }\n\n toggleClass(el, sortable.options.selectedClass, true);\n multiDragElements.push(el);\n },\n\n /**\r\n * Deselects the provided multi-drag item\r\n * @param {HTMLElement} el The element to be deselected\r\n */\n deselect: function deselect(el) {\n var sortable = el.parentNode[expando],\n index = multiDragElements.indexOf(el);\n if (!sortable || !sortable.options.multiDrag || !~index) return;\n toggleClass(el, sortable.options.selectedClass, false);\n multiDragElements.splice(index, 1);\n }\n },\n eventProperties: function eventProperties() {\n var _this3 = this;\n\n var oldIndicies = [],\n newIndicies = [];\n multiDragElements.forEach(function (multiDragElement) {\n oldIndicies.push({\n multiDragElement: multiDragElement,\n index: multiDragElement.sortableIndex\n }); // multiDragElements will already be sorted if folding\n\n var newIndex;\n\n if (folding && multiDragElement !== dragEl$1) {\n newIndex = -1;\n } else if (folding) {\n newIndex = index(multiDragElement, ':not(.' + _this3.options.selectedClass + ')');\n } else {\n newIndex = index(multiDragElement);\n }\n\n newIndicies.push({\n multiDragElement: multiDragElement,\n index: newIndex\n });\n });\n return {\n items: _toConsumableArray(multiDragElements),\n clones: [].concat(multiDragClones),\n oldIndicies: oldIndicies,\n newIndicies: newIndicies\n };\n },\n optionListeners: {\n multiDragKey: function multiDragKey(key) {\n key = key.toLowerCase();\n\n if (key === 'ctrl') {\n key = 'Control';\n } else if (key.length > 1) {\n key = key.charAt(0).toUpperCase() + key.substr(1);\n }\n\n return key;\n }\n }\n });\n}\n\nfunction insertMultiDragElements(clonesInserted, rootEl) {\n multiDragElements.forEach(function (multiDragElement, i) {\n var target = rootEl.children[multiDragElement.sortableIndex + (clonesInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(multiDragElement, target);\n } else {\n rootEl.appendChild(multiDragElement);\n }\n });\n}\n/**\r\n * Insert multi-drag clones\r\n * @param {[Boolean]} elementsInserted Whether the multi-drag elements are inserted\r\n * @param {HTMLElement} rootEl\r\n */\n\n\nfunction insertMultiDragClones(elementsInserted, rootEl) {\n multiDragClones.forEach(function (clone, i) {\n var target = rootEl.children[clone.sortableIndex + (elementsInserted ? Number(i) : 0)];\n\n if (target) {\n rootEl.insertBefore(clone, target);\n } else {\n rootEl.appendChild(clone);\n }\n });\n}\n\nfunction removeMultiDragElements() {\n multiDragElements.forEach(function (multiDragElement) {\n if (multiDragElement === dragEl$1) return;\n multiDragElement.parentNode && multiDragElement.parentNode.removeChild(multiDragElement);\n });\n}\n\nSortable.mount(new AutoScrollPlugin());\nSortable.mount(Remove, Revert);\n\nexport default Sortable;\nexport { MultiDragPlugin as MultiDrag, Sortable, SwapPlugin as Swap };\n","import Vue from 'vue'\nimport { getCurrentInstance } from 'vue'\n\nvar isVue2 = true\nvar isVue3 = false\nvar Vue2 = Vue\nvar warn = Vue.util.warn\n\nfunction install() {}\n\n// createApp polyfill\nexport function createApp(rootComponent, rootProps) {\n var vm\n var provide = {}\n var app = {\n config: Vue.config,\n use: Vue.use.bind(Vue),\n mixin: Vue.mixin.bind(Vue),\n component: Vue.component.bind(Vue),\n provide: function (key, value) {\n provide[key] = value\n return this\n },\n directive: function (name, dir) {\n if (dir) {\n Vue.directive(name, dir)\n return app\n } else {\n return Vue.directive(name)\n }\n },\n mount: function (el, hydrating) {\n if (!vm) {\n vm = new Vue(Object.assign({ propsData: rootProps }, rootComponent, { provide: Object.assign(provide, rootComponent.provide) }))\n vm.$mount(el, hydrating)\n return vm\n } else {\n return vm\n }\n },\n unmount: function () {\n if (vm) {\n vm.$destroy()\n vm = undefined\n }\n },\n }\n return app\n}\n\nexport {\n Vue,\n Vue2,\n isVue2,\n isVue3,\n install,\n warn\n}\n\n// Vue 3 components mock\nfunction createMockComponent(name) {\n return {\n setup() {\n throw new Error('[vue-demi] ' + name + ' is not supported in Vue 2. It\\'s provided to avoid compiler errors.')\n }\n }\n}\nexport var Fragment = /*#__PURE__*/ createMockComponent('Fragment')\nexport var Transition = /*#__PURE__*/ createMockComponent('Transition')\nexport var TransitionGroup = /*#__PURE__*/ createMockComponent('TransitionGroup')\nexport var Teleport = /*#__PURE__*/ createMockComponent('Teleport')\nexport var Suspense = /*#__PURE__*/ createMockComponent('Suspense')\nexport var KeepAlive = /*#__PURE__*/ createMockComponent('KeepAlive')\n\nexport * from 'vue'\n\n// Not implemented https://github.com/vuejs/core/pull/8111, falls back to getCurrentInstance()\nexport function hasInjectionContext() {\n return !!getCurrentInstance()\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('li',{class:{\n\t\t'order-selector-element': true,\n\t\t'order-selector-element--disabled': _vm.app.default\n\t},attrs:{\"data-cy-app-order-element\":_vm.app.id},on:{\"focusin\":function($event){return _vm.$emit('update:focus')}}},[_c('svg',{attrs:{\"width\":\"20\",\"height\":\"20\",\"viewBox\":\"0 0 20 20\",\"role\":\"presentation\"}},[_c('image',{staticClass:\"order-selector-element__icon\",attrs:{\"preserveAspectRatio\":\"xMinYMin meet\",\"x\":\"0\",\"y\":\"0\",\"width\":\"20\",\"height\":\"20\",\"xlink:href\":_vm.app.icon}})]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__label\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.app.label ?? _vm.app.id)+\"\\n\\t\")]),_vm._v(\" \"),_c('div',{staticClass:\"order-selector-element__actions\"},[_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isFirst && !_vm.app.default),expression:\"!isFirst && !app.default\"}],ref:\"buttonUp\",attrs:{\"aria-label\":_vm.t('settings', 'Move up'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"up\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveUp},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowUp',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isFirst || !!_vm.app.default),expression:\"isFirst || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}}),_vm._v(\" \"),_c('NcButton',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isLast && !_vm.app.default),expression:\"!isLast && !app.default\"}],ref:\"buttonDown\",attrs:{\"aria-label\":_vm.t('settings', 'Move down'),\"aria-describedby\":_vm.ariaDescribedby,\"aria-details\":_vm.ariaDetails,\"data-cy-app-order-button\":\"down\",\"type\":\"tertiary-no-background\"},on:{\"click\":_vm.moveDown},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconArrowDown',{attrs:{\"size\":20}})]},proxy:true}])}),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isLast || !!_vm.app.default),expression:\"isLast || !!app.default\"}],staticClass:\"order-selector-element__placeholder\",attrs:{\"aria-hidden\":\"true\"}})],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelectorElement.vue?vue&type=template&id=081ebc45&scoped=true\"\nimport script from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelectorElement.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelectorElement.vue?vue&type=style&index=0&id=081ebc45&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"081ebc45\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('Fragment',[_c('div',{staticClass:\"hidden-visually\",attrs:{\"id\":_vm.statusInfoId,\"aria-live\":\"polite\",\"role\":\"status\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.statusInfo)+\"\\n\\t\")]),_vm._v(\" \"),_c('ol',{ref:\"listElement\",staticClass:\"order-selector\",attrs:{\"data-cy-app-order\":\"\"}},_vm._l((_vm.appList),function(app,index){return _c('AppOrderSelectorElement',_vm._g({key:`${app.id}${_vm.renderCount}`,ref:\"selectorElements\",refInFor:true,attrs:{\"app\":app,\"aria-details\":_vm.ariaDetails,\"aria-describedby\":_vm.statusInfoId,\"is-first\":index === 0 || !!_vm.appList[index - 1].default,\"is-last\":index === _vm.value.length - 1}},app.default ? {} : {\n\t\t\t\t'move:up': () => _vm.moveUp(index),\n\t\t\t\t'move:down': () => _vm.moveDown(index),\n\t\t\t\t'update:focus': () => _vm.updateStatusInfo(index),\n\t\t\t}))}),1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { tryOnMounted, tryOnScopeDispose, toValue, unrefElement, defaultDocument } from '@vueuse/core';\nimport Sortable from 'sortablejs';\nimport { isRef, nextTick } from 'vue-demi';\n\nfunction useSortable(el, list, options = {}) {\n let sortable;\n const { document = defaultDocument, ...resetOptions } = options;\n const defaultOptions = {\n onUpdate: (e) => {\n moveArrayElement(list, e.oldIndex, e.newIndex);\n }\n };\n const start = () => {\n const target = typeof el === \"string\" ? document == null ? void 0 : document.querySelector(el) : unrefElement(el);\n if (!target || sortable !== void 0)\n return;\n sortable = new Sortable(target, { ...defaultOptions, ...resetOptions });\n };\n const stop = () => {\n sortable == null ? void 0 : sortable.destroy();\n sortable = void 0;\n };\n const option = (name, value) => {\n if (value !== void 0)\n sortable == null ? void 0 : sortable.option(name, value);\n else\n return sortable == null ? void 0 : sortable.option(name);\n };\n tryOnMounted(start);\n tryOnScopeDispose(stop);\n return {\n stop,\n start,\n option\n };\n}\nfunction moveArrayElement(list, from, to) {\n const _valueIsRef = isRef(list);\n const array = _valueIsRef ? [...toValue(list)] : toValue(list);\n if (to >= 0 && to < array.length) {\n const element = array.splice(from, 1)[0];\n nextTick(() => {\n array.splice(to, 0, element);\n if (_valueIsRef)\n list.value = array;\n });\n }\n}\n\nexport { moveArrayElement, useSortable };\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AppOrderSelector.vue?vue&type=template&id=35797e31&scoped=true\"\nimport script from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nexport * from \"./AppOrderSelector.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppOrderSelector.vue?vue&type=style&index=0&id=35797e31&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35797e31\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Undo.vue?vue&type=script&lang=js\"","<template>\n <span v-bind=\"$attrs\"\n :aria-hidden=\"title ? null : true\"\n :aria-label=\"title\"\n class=\"material-design-icon undo-icon\"\n role=\"img\"\n @click=\"$emit('click', $event)\">\n <svg :fill=\"fillColor\"\n class=\"material-design-icon__svg\"\n :width=\"size\"\n :height=\"size\"\n viewBox=\"0 0 24 24\">\n <path d=\"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\">\n <title v-if=\"title\">{{ title }}</title>\n </path>\n </svg>\n </span>\n</template>\n\n<script>\nexport default {\n name: \"UndoIcon\",\n emits: ['click'],\n props: {\n title: {\n type: String,\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n}\n</script>","import { render, staticRenderFns } from \"./Undo.vue?vue&type=template&id=a6d3d438\"\nimport script from \"./Undo.vue?vue&type=script&lang=js\"\nexport * from \"./Undo.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon undo-icon\",attrs:{\"aria-hidden\":_vm.title ? null : true,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-4.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=script&lang=ts\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserAppMenuSection.vue?vue&type=template&id=ee0f3d1a&scoped=true\"\nimport script from \"./UserAppMenuSection.vue?vue&type=script&lang=ts\"\nexport * from \"./UserAppMenuSection.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserAppMenuSection.vue?vue&type=style&index=0&id=ee0f3d1a&prod&scoped=true&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ee0f3d1a\",\n null\n \n)\n\nexport default component.exports","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :name=\"t('theming', 'Appearance and accessibility settings')\"\n\t\t\t:limit-width=\"false\"\n\t\t\tclass=\"theming\">\n\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t<p v-html=\"description\" />\n\t\t\t<!-- eslint-disable-next-line vue/no-v-html -->\n\t\t\t<p v-html=\"descriptionDetail\" />\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in themes\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:enforced=\"theme.id === enforceTheme\"\n\t\t\t\t\t:selected=\"selectedTheme.id === theme.id\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"themes.length === 1\"\n\t\t\t\t\ttype=\"theme\"\n\t\t\t\t\t@change=\"changeTheme\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in fonts\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:selected=\"theme.enabled\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"fonts.length === 1\"\n\t\t\t\t\ttype=\"font\"\n\t\t\t\t\t@change=\"changeFont\" />\n\t\t\t</div>\n\n\t\t\t<h3>{{ t('theming', 'Misc accessibility options') }}</h3>\n\t\t\t<NcCheckboxRadioSwitch type=\"checkbox\"\n\t\t\t\t:checked=\"enableBlurFilter === 'yes'\"\n\t\t\t\t:indeterminate=\"enableBlurFilter === ''\"\n\t\t\t\t@update:checked=\"changeEnableBlurFilter\">\n\t\t\t\t{{ t('theming', 'Enable blur background filter (may increase GPU load)') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :name=\"t('theming', 'Background')\"\n\t\t\tclass=\"background\"\n\t\t\tdata-user-theming-background-disabled>\n\t\t\t<template v-if=\"isUserThemingDisabled\">\n\t\t\t\t<p>{{ t('theming', 'Customization has been disabled by your administrator') }}</p>\n\t\t\t</template>\n\t\t\t<template v-else>\n\t\t\t\t<p>{{ t('theming', 'Set a custom background') }}</p>\n\t\t\t\t<BackgroundSettings class=\"background__grid\" @update:background=\"refreshGlobalStyles\" />\n\t\t\t</template>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :name=\"t('theming', 'Keyboard shortcuts')\">\n\t\t\t<p>{{ t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.') }}</p>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"shortcutsDisabled\"\n\t\t\t\ttype=\"switch\"\n\t\t\t\t@change=\"changeShortcutsDisabled\">\n\t\t\t\t{{ t('theming', 'Disable all keyboard shortcuts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<UserAppMenuSection />\n\t</section>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch.js'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection.js'\n\nimport BackgroundSettings from './components/BackgroundSettings.vue'\nimport ItemPreview from './components/ItemPreview.vue'\nimport UserAppMenuSection from './components/UserAppMenuSection.vue'\n\nconst availableThemes = loadState('theming', 'themes', [])\nconst enforceTheme = loadState('theming', 'enforceTheme', '')\nconst shortcutsDisabled = loadState('theming', 'shortcutsDisabled', false)\nconst enableBlurFilter = loadState('theming', 'enableBlurFilter', '')\n\nconst isUserThemingDisabled = loadState('theming', 'isUserThemingDisabled')\n\nexport default {\n\tname: 'UserThemes',\n\n\tcomponents: {\n\t\tItemPreview,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t\tBackgroundSettings,\n\t\tUserAppMenuSection,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableThemes,\n\n\t\t\t// Admin defined configs\n\t\t\tenforceTheme,\n\t\t\tshortcutsDisabled,\n\t\t\tisUserThemingDisabled,\n\n\t\t\tenableBlurFilter,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 1)\n\t\t},\n\n\t\tfonts() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 2)\n\t\t},\n\n\t\t// Selected theme, fallback on first (default) if none\n\t\tselectedTheme() {\n\t\t\treturn this.themes.find(theme => theme.enabled === true) || this.themes[0]\n\t\t},\n\n\t\tdescription() {\n\t\t\t// using the `t` replace method escape html, we have to do it manually :/\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.',\n\t\t\t)\n\t\t\t\t.replace('{guidelines}', this.guidelinesLink)\n\t\t\t\t.replace('{linkend}', '</a>')\n\t\t},\n\n\t\tguidelinesLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://www.w3.org/WAI/standards-guidelines/wcag/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdescriptionDetail() {\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!',\n\t\t\t)\n\t\t\t\t.replace('{issuetracker}', this.issuetrackerLink)\n\t\t\t\t.replace('{designteam}', this.designteamLink)\n\t\t\t\t.replace(/\\{linkend\\}/g, '</a>')\n\t\t},\n\n\t\tissuetrackerLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://github.com/nextcloud/server/issues/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\n\t\tdesignteamLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://nextcloud.com/design\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t},\n\n\twatch: {\n\t\tshortcutsDisabled(newState) {\n\t\t\tthis.changeShortcutsDisabled(newState)\n\t\t},\n\t},\n\n\tmethods: {\n\t\t// Refresh server-side generated theming CSS\n\t\trefreshGlobalStyles() {\n\t\t\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\t\t\tconst url = new URL(theme.href)\n\t\t\t\turl.searchParams.set('v', Date.now())\n\t\t\t\tconst newTheme = theme.cloneNode()\n\t\t\t\tnewTheme.href = url.toString()\n\t\t\t\tnewTheme.onload = () => theme.remove()\n\t\t\t\tdocument.head.append(newTheme)\n\t\t\t})\n\t\t},\n\n\t\tupdateBackground(data) {\n\t\t\tthis.background = (data.type === 'custom' || data.type === 'default') ? data.type : data.value\n\t\t\tthis.refreshGlobalStyles()\n\t\t},\n\n\t\tchangeTheme({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tif (theme.id === id && enabled) {\n\t\t\t\t\ttheme.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\ttheme.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tchangeFont({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tif (font.id === id && enabled) {\n\t\t\t\t\tfont.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tfont.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tasync changeShortcutsDisabled(newState) {\n\t\t\tif (newState) {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tconfigValue: 'yes',\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tasync changeEnableBlurFilter() {\n\t\t\tthis.enableBlurFilter = this.enableBlurFilter === 'no' ? 'yes' : 'no'\n\t\t\tawait axios({\n\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\tappId: 'theming',\n\t\t\t\t\tconfigKey: 'force_enable_blur_filter',\n\t\t\t\t}),\n\t\t\t\tdata: {\n\t\t\t\t\tconfigValue: this.enableBlurFilter,\n\t\t\t\t},\n\t\t\t\tmethod: 'POST',\n\t\t\t})\n\t\t\t// Refresh the styles\n\t\t\tthis.$emit('update:background')\n\t\t},\n\n\t\tupdateBodyAttributes() {\n\t\t\tconst enabledThemesIDs = this.themes.filter(theme => theme.enabled === true).map(theme => theme.id)\n\t\t\tconst enabledFontsIDs = this.fonts.filter(font => font.enabled === true).map(font => font.id)\n\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${theme.id}`, theme.enabled)\n\t\t\t})\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${font.id}`, font.enabled)\n\t\t\t})\n\n\t\t\tdocument.body.setAttribute('data-themes', [...enabledThemesIDs, ...enabledFontsIDs].join(','))\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {boolean} enabled the theme state\n\t\t * @param {string} themeId the theme ID to change\n\t\t */\n\t\tasync selectItem(enabled, themeId) {\n\t\t\ttry {\n\t\t\t\tif (enabled) {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}/enable', { themeId }),\n\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}', { themeId }),\n\t\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err, err.response)\n\t\t\t\tOC.Notification.showTemporary(t('theming', err.response.data.ocs.meta.message + '. Unable to apply the setting.'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=1ed3985c&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=1ed3985c&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserThemes.vue?vue&type=template&id=1ed3985c&scoped=true\"\nimport script from \"./UserThemes.vue?vue&type=script&lang=js\"\nexport * from \"./UserThemes.vue?vue&type=script&lang=js\"\nimport style0 from \"./UserThemes.vue?vue&type=style&index=0&id=1ed3985c&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1ed3985c\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('section',[_c('NcSettingsSection',{staticClass:\"theming\",attrs:{\"name\":_vm.t('theming', 'Appearance and accessibility settings'),\"limit-width\":false}},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.themes),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"enforced\":theme.id === _vm.enforceTheme,\"selected\":_vm.selectedTheme.id === theme.id,\"theme\":theme,\"unique\":_vm.themes.length === 1,\"type\":\"theme\"},on:{\"change\":_vm.changeTheme}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.fonts),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"selected\":theme.enabled,\"theme\":theme,\"unique\":_vm.fonts.length === 1,\"type\":\"font\"},on:{\"change\":_vm.changeFont}})}),1),_vm._v(\" \"),_c('h3',[_vm._v(_vm._s(_vm.t('theming', 'Misc accessibility options')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{attrs:{\"type\":\"checkbox\",\"checked\":_vm.enableBlurFilter === 'yes',\"indeterminate\":_vm.enableBlurFilter === ''},on:{\"update:checked\":_vm.changeEnableBlurFilter}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Enable blur background filter (may increase GPU load)'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcSettingsSection',{staticClass:\"background\",attrs:{\"name\":_vm.t('theming', 'Background'),\"data-user-theming-background-disabled\":\"\"}},[(_vm.isUserThemingDisabled)?[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Customization has been disabled by your administrator')))])]:[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Set a custom background')))]),_vm._v(\" \"),_c('BackgroundSettings',{staticClass:\"background__grid\",on:{\"update:background\":_vm.refreshGlobalStyles}})]],2),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"name\":_vm.t('theming', 'Keyboard shortcuts')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.shortcutsDisabled,\"type\":\"switch\"},on:{\"update:checked\":function($event){_vm.shortcutsDisabled=$event},\"change\":_vm.changeShortcutsDisabled}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Disable all keyboard shortcuts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('UserAppMenuSection')],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { getRequestToken } from '@nextcloud/auth'\nimport Vue from 'vue'\n\nimport { refreshStyles } from './helpers/refreshStyles.js'\nimport App from './UserThemes.vue'\n\n// eslint-disable-next-line camelcase\n__webpack_nonce__ = btoa(getRequestToken())\n\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#theming')\ntheming.$on('update:background', refreshStyles)\n","/**\n * @copyright 2022 Christopher Ng <chrng8@gmail.com>\n *\n * @author Christopher Ng <chrng8@gmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nexport const refreshStyles = () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.theming p[data-v-1ed3985c]{max-width:800px}.theming[data-v-1ed3985c] a{font-weight:bold}.theming[data-v-1ed3985c] a:hover,.theming[data-v-1ed3985c] a:focus{text-decoration:underline}.theming__preview-list[data-v-1ed3985c]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-1ed3985c]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-1ed3985c]{display:flex;flex-direction:column}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/UserThemes.vue\"],\"names\":[],\"mappings\":\"AAGC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA\",\"sourcesContent\":[\"\\n.theming {\\n\\t// Limit width of settings sections for readability\\n\\tp {\\n\\t\\tmax-width: 800px;\\n\\t}\\n\\n\\t// Proper highlight for links and focus feedback\\n\\t&::v-deep a {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview-list {\\n\\t\\t--gap: 30px;\\n\\n\\t\\tdisplay: grid;\\n\\t\\tmargin-top: var(--gap);\\n\\t\\tcolumn-gap: var(--gap);\\n\\t\\trow-gap: var(--gap);\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n}\\n\\n.background {\\n\\t&__grid {\\n\\t\\tmargin-top: 30px;\\n\\t}\\n}\\n\\n@media (max-width: 1440px) {\\n\\t.theming__preview-list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector[data-v-35797e31]{width:max-content;min-width:260px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelector.vue\"],\"names\":[],\"mappings\":\"AACA,iCACC,iBAAA,CACA,eAAA\",\"sourcesContent\":[\"\\n.order-selector {\\n\\twidth: max-content;\\n\\tmin-width: 260px; // align with NcSelect\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.order-selector-element[data-v-081ebc45]{list-style:none;display:flex;flex-direction:row;align-items:center;gap:12px;padding-inline:12px}.order-selector-element[data-v-081ebc45]:hover{background-color:var(--color-background-hover);border-radius:var(--border-radius-large)}.order-selector-element--disabled[data-v-081ebc45]{border-color:var(--color-text-maxcontrast);color:var(--color-text-maxcontrast)}.order-selector-element--disabled .order-selector-element__icon[data-v-081ebc45]{opacity:75%}.order-selector-element__actions[data-v-081ebc45]{flex:0 0;display:flex;flex-direction:row;gap:6px}.order-selector-element__label[data-v-081ebc45]{flex:1 1;text-overflow:ellipsis;overflow:hidden}.order-selector-element__placeholder[data-v-081ebc45]{height:44px;width:44px}.order-selector-element__icon[data-v-081ebc45]{filter:var(--background-invert-if-bright)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/AppOrderSelectorElement.vue\"],\"names\":[],\"mappings\":\"AACA,yCAEC,eAAA,CAEA,YAAA,CACA,kBAAA,CACA,kBAAA,CAEA,QAAA,CACA,mBAAA,CAEA,+CACC,8CAAA,CACA,wCAAA,CAGD,mDACC,0CAAA,CACA,mCAAA,CAEA,iFACC,WAAA,CAIF,kDACC,QAAA,CACA,YAAA,CACA,kBAAA,CACA,OAAA,CAGD,gDACC,QAAA,CACA,sBAAA,CACA,eAAA,CAGD,sDACC,WAAA,CACA,UAAA,CAGD,+CACC,yCAAA\",\"sourcesContent\":[\"\\n.order-selector-element {\\n\\t// hide default styling\\n\\tlist-style: none;\\n\\t// Align children\\n\\tdisplay: flex;\\n\\tflex-direction: row;\\n\\talign-items: center;\\n\\t// Spacing\\n\\tgap: 12px;\\n\\tpadding-inline: 12px;\\n\\n\\t&:hover {\\n\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t}\\n\\n\\t&--disabled {\\n\\t\\tborder-color: var(--color-text-maxcontrast);\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\n\\t\\t.order-selector-element__icon {\\n\\t\\t\\topacity: 75%;\\n\\t\\t}\\n\\t}\\n\\n\\t&__actions {\\n\\t\\tflex: 0 0;\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: row;\\n\\t\\tgap: 6px;\\n\\t}\\n\\n\\t&__label {\\n\\t\\tflex: 1 1;\\n\\t\\ttext-overflow: ellipsis;\\n\\t\\toverflow: hidden;\\n\\t}\\n\\n\\t&__placeholder {\\n\\t\\theight: 44px;\\n\\t\\twidth: 44px;\\n\\t}\\n\\n\\t&__icon {\\n\\t\\tfilter: var(--background-invert-if-bright);\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.background-selector[data-v-1175e65a]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background-color[data-v-1175e65a]{display:flex;justify-content:center;align-items:center;width:176px;height:96px;margin:8px;border-radius:var(--border-radius-large);background-color:var(--color-primary)}.background-selector .background[data-v-1175e65a]{overflow:hidden;width:176px;height:96px;margin:8px;text-align:center;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover}.background-selector .background__filepicker.background--active[data-v-1175e65a]{color:#fff;background-image:var(--image-background)}.background-selector .background__default[data-v-1175e65a]{background-color:var(--color-primary-default);background-image:linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)),var(--image-background-plain, var(--image-background-default))}.background-selector .background__filepicker[data-v-1175e65a],.background-selector .background__default[data-v-1175e65a],.background-selector .background__color[data-v-1175e65a]{border-color:var(--color-border)}.background-selector .background__default[data-v-1175e65a],.background-selector .background__shipped[data-v-1175e65a]{color:#fff}.background-selector .background[data-color-bright][data-v-1175e65a]{color:#000}.background-selector .background--active[data-v-1175e65a],.background-selector .background[data-v-1175e65a]:hover,.background-selector .background[data-v-1175e65a]:focus{outline:2px solid var(--color-main-text) !important;border-color:var(--color-main-background) !important}.background-selector .background span[data-v-1175e65a]{margin:4px}.background-selector .background .check-icon[data-v-1175e65a]{display:none}.background-selector .background--active:not(.icon-loading) .check-icon[data-v-1175e65a]{display:block !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,wDACC,YAAA,CACA,sBAAA,CACA,kBAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,wCAAA,CACA,qCAAA,CAGD,kDACC,eAAA,CACA,WAAA,CACA,WAAA,CACA,UAAA,CACA,iBAAA,CACA,6CAAA,CACA,wCAAA,CACA,iCAAA,CACA,qBAAA,CAGC,iFACC,UAAA,CACA,wCAAA,CAIF,2DACC,6CAAA,CACA,wJAAA,CAGD,kLACC,gCAAA,CAID,sHAEC,UAAA,CAID,qEACC,UAAA,CAGD,0KAGC,mDAAA,CACA,oDAAA,CAID,uDACC,UAAA,CAGD,8DACC,YAAA,CAIA,yFAEC,wBAAA\",\"sourcesContent\":[\"\\n.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background-color {\\n\\t\\tdisplay: flex;\\n\\t\\tjustify-content: center;\\n\\t\\talign-items: center;\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-color: var(--color-primary);\\n\\t}\\n\\n\\t.background {\\n\\t\\toverflow: hidden;\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\ttext-align: center;\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tbackground-position: center center;\\n\\t\\tbackground-size: cover;\\n\\n\\t\\t&__filepicker {\\n\\t\\t\\t&.background--active {\\n\\t\\t\\t\\tcolor: white;\\n\\t\\t\\t\\tbackground-image: var(--image-background);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t&__default {\\n\\t\\t\\tbackground-color: var(--color-primary-default);\\n\\t\\t\\tbackground-image: linear-gradient(to bottom, rgba(23, 23, 23, 0.5), rgba(23, 23, 23, 0.5)), var(--image-background-plain, var(--image-background-default));\\n\\t\\t}\\n\\n\\t\\t&__filepicker, &__default, &__color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t// Over a background image\\n\\t\\t&__default,\\n\\t\\t&__shipped {\\n\\t\\t\\tcolor: white;\\n\\t\\t}\\n\\n\\t\\t// Text and svg icon dark on bright background\\n\\t\\t&[data-color-bright] {\\n\\t\\t\\tcolor: black;\\n\\t\\t}\\n\\n\\t\\t&--active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\toutline: 2px solid var(--color-main-text) !important;\\n\\t\\t\\tborder-color: var(--color-main-background) !important;\\n\\t\\t}\\n\\n\\t\\t// Icon\\n\\t\\tspan {\\n\\t\\t\\tmargin: 4px;\\n\\t\\t}\\n\\n\\t\\t.check-icon {\\n\\t\\t\\tdisplay: none;\\n\\t\\t}\\n\\n\\t\\t&--active:not(.icon-loading) {\\n\\t\\t\\t.check-icon {\\n\\t\\t\\t\\t// Show checkmark\\n\\t\\t\\t\\tdisplay: block !important;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.theming__preview[data-v-63951bb4]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-63951bb4],.theming__preview *[data-v-63951bb4]{user-select:none}.theming__preview-image[data-v-63951bb4]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-explanation[data-v-63951bb4]{margin-bottom:10px}.theming__preview-description[data-v-63951bb4]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-63951bb4]{font-weight:bold;margin-bottom:0}.theming__preview-description label[data-v-63951bb4]{padding:12px 0}.theming__preview--default[data-v-63951bb4]{grid-column:span 2}.theming__preview-warning[data-v-63951bb4]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-63951bb4]{flex-direction:column}.theming__preview-image[data-v-63951bb4]{margin:0}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/ItemPreview.vue\"],\"names\":[],\"mappings\":\"AAGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,kBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,kDACC,gBAAA,CACA,eAAA,CAGD,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA\",\"sourcesContent\":[\"\\n@use 'sass:math';\\n\\n.theming__preview {\\n\\t// We make previews on 16/10 screens\\n\\t--ratio: 16;\\n\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: flex-start;\\n\\tmax-width: 800px;\\n\\n\\t&,\\n\\t* {\\n\\t\\tuser-select: none;\\n\\t}\\n\\n\\t&-image {\\n\\t\\tflex-basis: calc(16px * var(--ratio));\\n\\t\\tflex-shrink: 0;\\n\\t\\theight: calc(10px * var(--ratio));\\n\\t\\tmargin-right: var(--gap);\\n\\t\\tcursor: pointer;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: top left;\\n\\t\\tbackground-size: cover;\\n\\t}\\n\\n\\t&-explanation {\\n\\t\\tmargin-bottom: 10px;\\n\\t}\\n\\n\\t&-description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\th3 {\\n\\t\\t\\tfont-weight: bold;\\n\\t\\t\\tmargin-bottom: 0;\\n\\t\\t}\\n\\n\\t\\tlabel {\\n\\t\\t\\tpadding: 12px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--default {\\n\\t\\tgrid-column: span 2;\\n\\t}\\n\\n\\t&-warning {\\n\\t\\tcolor: var(--color-warning);\\n\\t}\\n}\\n\\n@media (max-width: math.div(1024px, 1.5)) {\\n\\t.theming__preview {\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&-image {\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.user-app-menu-order[data-v-ee0f3d1a]{margin-block:12px}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/UserAppMenuSection.vue\"],\"names\":[],\"mappings\":\"AACA,sCACC,iBAAA\",\"sourcesContent\":[\"\\n.user-app-menu-order {\\n\\tmargin-block: 12px;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var baseEach = require('./_baseEach');\n\n/**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n}\n\nmodule.exports = baseFilter;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","var arrayFilter = require('./_arrayFilter'),\n baseFilter = require('./_baseFilter'),\n baseIteratee = require('./_baseIteratee'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\nfunction filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, baseIteratee(predicate, 3));\n}\n\nmodule.exports = filter;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nvar vibrant_1 = __importDefault(require(\"./vibrant\"));\nvar browser_1 = __importDefault(require(\"./image/browser\"));\nvibrant_1.default.DefaultOpts.ImageClass = browser_1.default;\nmodule.exports = vibrant_1.default;\n//# sourceMappingURL=browser.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar vibrant_1 = __importDefault(require(\"./vibrant\"));\nvar clone = require(\"lodash/clone\");\nvar Builder = /** @class */ (function () {\n function Builder(src, opts) {\n if (opts === void 0) { opts = {}; }\n this._src = src;\n this._opts = opts;\n this._opts.filters = clone(vibrant_1.default.DefaultOpts.filters);\n }\n Builder.prototype.maxColorCount = function (n) {\n this._opts.colorCount = n;\n return this;\n };\n Builder.prototype.maxDimension = function (d) {\n this._opts.maxDimension = d;\n return this;\n };\n Builder.prototype.addFilter = function (f) {\n this._opts.filters.push(f);\n return this;\n };\n Builder.prototype.removeFilter = function (f) {\n var i = this._opts.filters.indexOf(f);\n if (i > 0)\n this._opts.filters.splice(i);\n return this;\n };\n Builder.prototype.clearFilters = function () {\n this._opts.filters = [];\n return this;\n };\n Builder.prototype.quality = function (q) {\n this._opts.quality = q;\n return this;\n };\n Builder.prototype.useImageClass = function (imageClass) {\n this._opts.ImageClass = imageClass;\n return this;\n };\n Builder.prototype.useGenerator = function (generator) {\n this._opts.generator = generator;\n return this;\n };\n Builder.prototype.useQuantizer = function (quantizer) {\n this._opts.quantizer = quantizer;\n return this;\n };\n Builder.prototype.build = function () {\n return new vibrant_1.default(this._src, this._opts);\n };\n Builder.prototype.getPalette = function (cb) {\n return this.build().getPalette(cb);\n };\n Builder.prototype.getSwatches = function (cb) {\n return this.build().getPalette(cb);\n };\n return Builder;\n}());\nexports.default = Builder;\n//# sourceMappingURL=builder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Swatch = void 0;\nvar util_1 = require(\"./util\");\nvar filter = require(\"lodash/filter\");\nvar Swatch = /** @class */ (function () {\n function Swatch(rgb, population) {\n this._rgb = rgb;\n this._population = population;\n }\n Swatch.applyFilter = function (colors, f) {\n return typeof f === 'function'\n ? filter(colors, function (_a) {\n var r = _a.r, g = _a.g, b = _a.b;\n return f(r, g, b, 255);\n })\n : colors;\n };\n Object.defineProperty(Swatch.prototype, \"r\", {\n get: function () { return this._rgb[0]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"g\", {\n get: function () { return this._rgb[1]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"b\", {\n get: function () { return this._rgb[2]; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"rgb\", {\n get: function () { return this._rgb; },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"hsl\", {\n get: function () {\n if (!this._hsl) {\n var _a = this._rgb, r = _a[0], g = _a[1], b = _a[2];\n this._hsl = util_1.rgbToHsl(r, g, b);\n }\n return this._hsl;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"hex\", {\n get: function () {\n if (!this._hex) {\n var _a = this._rgb, r = _a[0], g = _a[1], b = _a[2];\n this._hex = util_1.rgbToHex(r, g, b);\n }\n return this._hex;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"population\", {\n get: function () { return this._population; },\n enumerable: false,\n configurable: true\n });\n Swatch.prototype.toJSON = function () {\n return {\n rgb: this.rgb,\n population: this.population\n };\n };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getRgb = function () { return this._rgb; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getHsl = function () { return this.hsl; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getPopulation = function () { return this._population; };\n // TODO: deprecate internally, use property instead\n Swatch.prototype.getHex = function () { return this.hex; };\n Swatch.prototype.getYiq = function () {\n if (!this._yiq) {\n var rgb = this._rgb;\n this._yiq = (rgb[0] * 299 + rgb[1] * 587 + rgb[2] * 114) / 1000;\n }\n return this._yiq;\n };\n Object.defineProperty(Swatch.prototype, \"titleTextColor\", {\n get: function () {\n if (!this._titleTextColor) {\n this._titleTextColor = this.getYiq() < 200 ? '#fff' : '#000';\n }\n return this._titleTextColor;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Swatch.prototype, \"bodyTextColor\", {\n get: function () {\n if (!this._bodyTextColor) {\n this._bodyTextColor = this.getYiq() < 150 ? '#fff' : '#000';\n }\n return this._bodyTextColor;\n },\n enumerable: false,\n configurable: true\n });\n Swatch.prototype.getTitleTextColor = function () {\n return this.titleTextColor;\n };\n Swatch.prototype.getBodyTextColor = function () {\n return this.bodyTextColor;\n };\n return Swatch;\n}());\nexports.Swatch = Swatch;\n//# sourceMappingURL=color.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction defaultFilter(r, g, b, a) {\n return a >= 125 &&\n !(r > 250 && g > 250 && b > 250);\n}\nexports.default = defaultFilter;\n//# sourceMappingURL=default.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.combineFilters = void 0;\nvar default_1 = require(\"./default\");\nObject.defineProperty(exports, \"Default\", { enumerable: true, get: function () { return default_1.default; } });\nfunction combineFilters(filters) {\n // TODO: caching\n if (!Array.isArray(filters) || filters.length === 0)\n return null;\n return function (r, g, b, a) {\n if (a === 0)\n return false;\n for (var i = 0; i < filters.length; i++) {\n if (!filters[i](r, g, b, a))\n return false;\n }\n return true;\n };\n}\nexports.combineFilters = combineFilters;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar util_1 = require(\"../util\");\nvar defaults = require(\"lodash/defaults\");\nvar DefaultOpts = {\n targetDarkLuma: 0.26,\n maxDarkLuma: 0.45,\n minLightLuma: 0.55,\n targetLightLuma: 0.74,\n minNormalLuma: 0.3,\n targetNormalLuma: 0.5,\n maxNormalLuma: 0.7,\n targetMutesSaturation: 0.3,\n maxMutesSaturation: 0.4,\n targetVibrantSaturation: 1.0,\n minVibrantSaturation: 0.35,\n weightSaturation: 3,\n weightLuma: 6.5,\n weightPopulation: 0.5\n};\nfunction _findMaxPopulation(swatches) {\n var p = 0;\n swatches.forEach(function (s) {\n p = Math.max(p, s.getPopulation());\n });\n return p;\n}\nfunction _isAlreadySelected(palette, s) {\n return palette.Vibrant === s ||\n palette.DarkVibrant === s ||\n palette.LightVibrant === s ||\n palette.Muted === s ||\n palette.DarkMuted === s ||\n palette.LightMuted === s;\n}\nfunction _createComparisonValue(saturation, targetSaturation, luma, targetLuma, population, maxPopulation, opts) {\n function weightedMean() {\n var values = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n values[_i] = arguments[_i];\n }\n var sum = 0;\n var weightSum = 0;\n for (var i = 0; i < values.length; i += 2) {\n var value = values[i];\n var weight = values[i + 1];\n sum += value * weight;\n weightSum += weight;\n }\n return sum / weightSum;\n }\n function invertDiff(value, targetValue) {\n return 1 - Math.abs(value - targetValue);\n }\n return weightedMean(invertDiff(saturation, targetSaturation), opts.weightSaturation, invertDiff(luma, targetLuma), opts.weightLuma, population / maxPopulation, opts.weightPopulation);\n}\nfunction _findColorVariation(palette, swatches, maxPopulation, targetLuma, minLuma, maxLuma, targetSaturation, minSaturation, maxSaturation, opts) {\n var max = null;\n var maxValue = 0;\n swatches.forEach(function (swatch) {\n var _a = swatch.getHsl(), s = _a[1], l = _a[2];\n if (s >= minSaturation && s <= maxSaturation &&\n l >= minLuma && l <= maxLuma &&\n !_isAlreadySelected(palette, swatch)) {\n var value = _createComparisonValue(s, targetSaturation, l, targetLuma, swatch.getPopulation(), maxPopulation, opts);\n if (max === null || value > maxValue) {\n max = swatch;\n maxValue = value;\n }\n }\n });\n return max;\n}\nfunction _generateVariationColors(swatches, maxPopulation, opts) {\n var palette = {};\n // mVibrantSwatch = findColor(TARGET_NORMAL_LUMA, MIN_NORMAL_LUMA, MAX_NORMAL_LUMA,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.Vibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetNormalLuma, opts.minNormalLuma, opts.maxNormalLuma, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mLightVibrantSwatch = findColor(TARGET_LIGHT_LUMA, MIN_LIGHT_LUMA, 1f,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.LightVibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetLightLuma, opts.minLightLuma, 1, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mDarkVibrantSwatch = findColor(TARGET_DARK_LUMA, 0f, MAX_DARK_LUMA,\n // TARGET_VIBRANT_SATURATION, MIN_VIBRANT_SATURATION, 1f);\n palette.DarkVibrant = _findColorVariation(palette, swatches, maxPopulation, opts.targetDarkLuma, 0, opts.maxDarkLuma, opts.targetVibrantSaturation, opts.minVibrantSaturation, 1, opts);\n // mMutedSwatch = findColor(TARGET_NORMAL_LUMA, MIN_NORMAL_LUMA, MAX_NORMAL_LUMA,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.Muted = _findColorVariation(palette, swatches, maxPopulation, opts.targetNormalLuma, opts.minNormalLuma, opts.maxNormalLuma, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n // mLightMutedColor = findColor(TARGET_LIGHT_LUMA, MIN_LIGHT_LUMA, 1f,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.LightMuted = _findColorVariation(palette, swatches, maxPopulation, opts.targetLightLuma, opts.minLightLuma, 1, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n // mDarkMutedSwatch = findColor(TARGET_DARK_LUMA, 0f, MAX_DARK_LUMA,\n // TARGET_MUTED_SATURATION, 0f, MAX_MUTED_SATURATION);\n palette.DarkMuted = _findColorVariation(palette, swatches, maxPopulation, opts.targetDarkLuma, 0, opts.maxDarkLuma, opts.targetMutesSaturation, 0, opts.maxMutesSaturation, opts);\n return palette;\n}\nfunction _generateEmptySwatches(palette, maxPopulation, opts) {\n if (palette.Vibrant === null && palette.DarkVibrant === null && palette.LightVibrant === null) {\n if (palette.DarkVibrant === null && palette.DarkMuted !== null) {\n var _a = palette.DarkMuted.getHsl(), h = _a[0], s = _a[1], l = _a[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightVibrant === null && palette.LightMuted !== null) {\n var _b = palette.LightMuted.getHsl(), h = _b[0], s = _b[1], l = _b[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n }\n if (palette.Vibrant === null && palette.DarkVibrant !== null) {\n var _c = palette.DarkVibrant.getHsl(), h = _c[0], s = _c[1], l = _c[2];\n l = opts.targetNormalLuma;\n palette.Vibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n else if (palette.Vibrant === null && palette.LightVibrant !== null) {\n var _d = palette.LightVibrant.getHsl(), h = _d[0], s = _d[1], l = _d[2];\n l = opts.targetNormalLuma;\n palette.Vibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.DarkVibrant === null && palette.Vibrant !== null) {\n var _e = palette.Vibrant.getHsl(), h = _e[0], s = _e[1], l = _e[2];\n l = opts.targetDarkLuma;\n palette.DarkVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightVibrant === null && palette.Vibrant !== null) {\n var _f = palette.Vibrant.getHsl(), h = _f[0], s = _f[1], l = _f[2];\n l = opts.targetLightLuma;\n palette.LightVibrant = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.Muted === null && palette.Vibrant !== null) {\n var _g = palette.Vibrant.getHsl(), h = _g[0], s = _g[1], l = _g[2];\n l = opts.targetMutesSaturation;\n palette.Muted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.DarkMuted === null && palette.DarkVibrant !== null) {\n var _h = palette.DarkVibrant.getHsl(), h = _h[0], s = _h[1], l = _h[2];\n l = opts.targetMutesSaturation;\n palette.DarkMuted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n if (palette.LightMuted === null && palette.LightVibrant !== null) {\n var _j = palette.LightVibrant.getHsl(), h = _j[0], s = _j[1], l = _j[2];\n l = opts.targetMutesSaturation;\n palette.LightMuted = new color_1.Swatch(util_1.hslToRgb(h, s, l), 0);\n }\n}\nvar DefaultGenerator = function (swatches, opts) {\n opts = defaults({}, opts, DefaultOpts);\n var maxPopulation = _findMaxPopulation(swatches);\n var palette = _generateVariationColors(swatches, maxPopulation, opts);\n _generateEmptySwatches(palette, maxPopulation, opts);\n return palette;\n};\nexports.default = DefaultGenerator;\n//# sourceMappingURL=default.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar default_1 = require(\"./default\");\nObject.defineProperty(exports, \"Default\", { enumerable: true, get: function () { return default_1.default; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ImageBase = void 0;\nvar ImageBase = /** @class */ (function () {\n function ImageBase() {\n }\n ImageBase.prototype.scaleDown = function (opts) {\n var width = this.getWidth();\n var height = this.getHeight();\n var ratio = 1;\n if (opts.maxDimension > 0) {\n var maxSide = Math.max(width, height);\n if (maxSide > opts.maxDimension)\n ratio = opts.maxDimension / maxSide;\n }\n else {\n ratio = 1 / opts.quality;\n }\n if (ratio < 1)\n this.resize(width * ratio, height * ratio, ratio);\n };\n ImageBase.prototype.applyFilter = function (filter) {\n var imageData = this.getImageData();\n if (typeof filter === 'function') {\n var pixels = imageData.data;\n var n = pixels.length / 4;\n var offset = void 0, r = void 0, g = void 0, b = void 0, a = void 0;\n for (var i = 0; i < n; i++) {\n offset = i * 4;\n r = pixels[offset + 0];\n g = pixels[offset + 1];\n b = pixels[offset + 2];\n a = pixels[offset + 3];\n // Mark ignored color\n if (!filter(r, g, b, a))\n pixels[offset + 3] = 0;\n }\n }\n return Promise.resolve(imageData);\n };\n return ImageBase;\n}());\nexports.ImageBase = ImageBase;\n//# sourceMappingURL=base.js.map","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar base_1 = require(\"./base\");\nvar Url = __importStar(require(\"url\"));\nfunction isRelativeUrl(url) {\n var u = Url.parse(url);\n return u.protocol === null &&\n u.host === null &&\n u.port === null;\n}\nfunction isSameOrigin(a, b) {\n var ua = Url.parse(a);\n var ub = Url.parse(b);\n // https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy\n return ua.protocol === ub.protocol &&\n ua.hostname === ub.hostname &&\n ua.port === ub.port;\n}\nvar BrowserImage = /** @class */ (function (_super) {\n __extends(BrowserImage, _super);\n function BrowserImage() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BrowserImage.prototype._initCanvas = function () {\n var img = this.image;\n var canvas = this._canvas = document.createElement('canvas');\n var context = this._context = canvas.getContext('2d');\n canvas.className = 'vibrant-canvas';\n canvas.style.display = 'none';\n this._width = canvas.width = img.width;\n this._height = canvas.height = img.height;\n context.drawImage(img, 0, 0);\n document.body.appendChild(canvas);\n };\n BrowserImage.prototype.load = function (image) {\n var _this = this;\n var img = null;\n var src = null;\n if (typeof image === 'string') {\n img = document.createElement('img');\n if (!isRelativeUrl(image) && !isSameOrigin(window.location.href, image)) {\n img.crossOrigin = 'anonymous';\n }\n src = img.src = image;\n }\n else if (image instanceof HTMLImageElement) {\n img = image;\n src = image.src;\n }\n else {\n return Promise.reject(new Error(\"Cannot load buffer as an image in browser\"));\n }\n this.image = img;\n return new Promise(function (resolve, reject) {\n var onImageLoad = function () {\n _this._initCanvas();\n resolve(_this);\n };\n if (img.complete) {\n // Already loaded\n onImageLoad();\n }\n else {\n img.onload = onImageLoad;\n img.onerror = function (e) { return reject(new Error(\"Fail to load image: \" + src)); };\n }\n });\n };\n BrowserImage.prototype.clear = function () {\n this._context.clearRect(0, 0, this._width, this._height);\n };\n BrowserImage.prototype.update = function (imageData) {\n this._context.putImageData(imageData, 0, 0);\n };\n BrowserImage.prototype.getWidth = function () {\n return this._width;\n };\n BrowserImage.prototype.getHeight = function () {\n return this._height;\n };\n BrowserImage.prototype.resize = function (targetWidth, targetHeight, ratio) {\n var _a = this, canvas = _a._canvas, context = _a._context, img = _a.image;\n this._width = canvas.width = targetWidth;\n this._height = canvas.height = targetHeight;\n context.scale(ratio, ratio);\n context.drawImage(img, 0, 0);\n };\n BrowserImage.prototype.getPixelCount = function () {\n return this._width * this._height;\n };\n BrowserImage.prototype.getImageData = function () {\n return this._context.getImageData(0, 0, this._width, this._height);\n };\n BrowserImage.prototype.remove = function () {\n if (this._canvas && this._canvas.parentNode) {\n this._canvas.parentNode.removeChild(this._canvas);\n }\n };\n return BrowserImage;\n}(base_1.ImageBase));\nexports.default = BrowserImage;\n//# sourceMappingURL=browser.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WebWorker = void 0;\nvar mmcq_1 = require(\"./mmcq\");\nObject.defineProperty(exports, \"MMCQ\", { enumerable: true, get: function () { return mmcq_1.default; } });\nexports.WebWorker = null;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"../color\");\nvar vbox_1 = __importDefault(require(\"./vbox\"));\nvar pqueue_1 = __importDefault(require(\"./pqueue\"));\nvar fractByPopulations = 0.75;\nfunction _splitBoxes(pq, target) {\n var lastSize = pq.size();\n while (pq.size() < target) {\n var vbox = pq.pop();\n if (vbox && vbox.count() > 0) {\n var _a = vbox.split(), vbox1 = _a[0], vbox2 = _a[1];\n pq.push(vbox1);\n if (vbox2 && vbox2.count() > 0)\n pq.push(vbox2);\n // No more new boxes, converged\n if (pq.size() === lastSize) {\n break;\n }\n else {\n lastSize = pq.size();\n }\n }\n else {\n break;\n }\n }\n}\nvar MMCQ = function (pixels, opts) {\n if (pixels.length === 0 || opts.colorCount < 2 || opts.colorCount > 256) {\n throw new Error('Wrong MMCQ parameters');\n }\n var vbox = vbox_1.default.build(pixels);\n var hist = vbox.hist;\n var colorCount = Object.keys(hist).length;\n var pq = new pqueue_1.default(function (a, b) { return a.count() - b.count(); });\n pq.push(vbox);\n // first set of colors, sorted by population\n _splitBoxes(pq, fractByPopulations * opts.colorCount);\n // Re-order\n var pq2 = new pqueue_1.default(function (a, b) { return a.count() * a.volume() - b.count() * b.volume(); });\n pq2.contents = pq.contents;\n // next set - generate the median cuts using the (npix * vol) sorting.\n _splitBoxes(pq2, opts.colorCount - pq2.size());\n // calculate the actual colors\n return generateSwatches(pq2);\n};\nfunction generateSwatches(pq) {\n var swatches = [];\n while (pq.size()) {\n var v = pq.pop();\n var color = v.avg();\n var r = color[0], g = color[1], b = color[2];\n swatches.push(new color_1.Swatch(color, v.count()));\n }\n return swatches;\n}\nexports.default = MMCQ;\n//# sourceMappingURL=mmcq.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar PQueue = /** @class */ (function () {\n function PQueue(comparator) {\n this._comparator = comparator;\n this.contents = [];\n this._sorted = false;\n }\n PQueue.prototype._sort = function () {\n if (!this._sorted) {\n this.contents.sort(this._comparator);\n this._sorted = true;\n }\n };\n PQueue.prototype.push = function (item) {\n this.contents.push(item);\n this._sorted = false;\n };\n PQueue.prototype.peek = function (index) {\n this._sort();\n index = typeof index === 'number' ? index : this.contents.length - 1;\n return this.contents[index];\n };\n PQueue.prototype.pop = function () {\n this._sort();\n return this.contents.pop();\n };\n PQueue.prototype.size = function () {\n return this.contents.length;\n };\n PQueue.prototype.map = function (mapper) {\n this._sort();\n return this.contents.map(mapper);\n };\n return PQueue;\n}());\nexports.default = PQueue;\n//# sourceMappingURL=pqueue.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar util_1 = require(\"../util\");\nvar VBox = /** @class */ (function () {\n function VBox(r1, r2, g1, g2, b1, b2, hist) {\n this._volume = -1;\n this._count = -1;\n this.dimension = { r1: r1, r2: r2, g1: g1, g2: g2, b1: b1, b2: b2 };\n this.hist = hist;\n }\n VBox.build = function (pixels, shouldIgnore) {\n var hn = 1 << (3 * util_1.SIGBITS);\n var hist = new Uint32Array(hn);\n var rmax;\n var rmin;\n var gmax;\n var gmin;\n var bmax;\n var bmin;\n var r;\n var g;\n var b;\n var a;\n rmax = gmax = bmax = 0;\n rmin = gmin = bmin = Number.MAX_VALUE;\n var n = pixels.length / 4;\n var i = 0;\n while (i < n) {\n var offset = i * 4;\n i++;\n r = pixels[offset + 0];\n g = pixels[offset + 1];\n b = pixels[offset + 2];\n a = pixels[offset + 3];\n // Ignored pixels' alpha is marked as 0 in filtering stage\n if (a === 0)\n continue;\n r = r >> util_1.RSHIFT;\n g = g >> util_1.RSHIFT;\n b = b >> util_1.RSHIFT;\n var index = util_1.getColorIndex(r, g, b);\n hist[index] += 1;\n if (r > rmax)\n rmax = r;\n if (r < rmin)\n rmin = r;\n if (g > gmax)\n gmax = g;\n if (g < gmin)\n gmin = g;\n if (b > bmax)\n bmax = b;\n if (b < bmin)\n bmin = b;\n }\n return new VBox(rmin, rmax, gmin, gmax, bmin, bmax, hist);\n };\n VBox.prototype.invalidate = function () {\n this._volume = this._count = -1;\n this._avg = null;\n };\n VBox.prototype.volume = function () {\n if (this._volume < 0) {\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n this._volume = (r2 - r1 + 1) * (g2 - g1 + 1) * (b2 - b1 + 1);\n }\n return this._volume;\n };\n VBox.prototype.count = function () {\n if (this._count < 0) {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var c = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n c += hist[index];\n }\n }\n }\n this._count = c;\n }\n return this._count;\n };\n VBox.prototype.clone = function () {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n return new VBox(r1, r2, g1, g2, b1, b2, hist);\n };\n VBox.prototype.avg = function () {\n if (!this._avg) {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var ntot = 0;\n var mult = 1 << (8 - util_1.SIGBITS);\n var rsum = void 0;\n var gsum = void 0;\n var bsum = void 0;\n rsum = gsum = bsum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n var h = hist[index];\n ntot += h;\n rsum += (h * (r + 0.5) * mult);\n gsum += (h * (g + 0.5) * mult);\n bsum += (h * (b + 0.5) * mult);\n }\n }\n }\n if (ntot) {\n this._avg = [\n ~~(rsum / ntot),\n ~~(gsum / ntot),\n ~~(bsum / ntot)\n ];\n }\n else {\n this._avg = [\n ~~(mult * (r1 + r2 + 1) / 2),\n ~~(mult * (g1 + g2 + 1) / 2),\n ~~(mult * (b1 + b2 + 1) / 2)\n ];\n }\n }\n return this._avg;\n };\n VBox.prototype.contains = function (rgb) {\n var r = rgb[0], g = rgb[1], b = rgb[2];\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n r >>= util_1.RSHIFT;\n g >>= util_1.RSHIFT;\n b >>= util_1.RSHIFT;\n return r >= r1 && r <= r2 &&\n g >= g1 && g <= g2 &&\n b >= b1 && b <= b2;\n };\n VBox.prototype.split = function () {\n var hist = this.hist;\n var _a = this.dimension, r1 = _a.r1, r2 = _a.r2, g1 = _a.g1, g2 = _a.g2, b1 = _a.b1, b2 = _a.b2;\n var count = this.count();\n if (!count)\n return [];\n if (count === 1)\n return [this.clone()];\n var rw = r2 - r1 + 1;\n var gw = g2 - g1 + 1;\n var bw = b2 - b1 + 1;\n var maxw = Math.max(rw, gw, bw);\n var accSum = null;\n var sum;\n var total;\n sum = total = 0;\n var maxd = null;\n if (maxw === rw) {\n maxd = 'r';\n accSum = new Uint32Array(r2 + 1);\n for (var r = r1; r <= r2; r++) {\n sum = 0;\n for (var g = g1; g <= g2; g++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[r] = total;\n }\n }\n else if (maxw === gw) {\n maxd = 'g';\n accSum = new Uint32Array(g2 + 1);\n for (var g = g1; g <= g2; g++) {\n sum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var b = b1; b <= b2; b++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[g] = total;\n }\n }\n else {\n maxd = 'b';\n accSum = new Uint32Array(b2 + 1);\n for (var b = b1; b <= b2; b++) {\n sum = 0;\n for (var r = r1; r <= r2; r++) {\n for (var g = g1; g <= g2; g++) {\n var index = util_1.getColorIndex(r, g, b);\n sum += hist[index];\n }\n }\n total += sum;\n accSum[b] = total;\n }\n }\n var splitPoint = -1;\n var reverseSum = new Uint32Array(accSum.length);\n for (var i = 0; i < accSum.length; i++) {\n var d = accSum[i];\n if (splitPoint < 0 && d > total / 2)\n splitPoint = i;\n reverseSum[i] = total - d;\n }\n var vbox = this;\n function doCut(d) {\n var dim1 = d + '1';\n var dim2 = d + '2';\n var d1 = vbox.dimension[dim1];\n var d2 = vbox.dimension[dim2];\n var vbox1 = vbox.clone();\n var vbox2 = vbox.clone();\n var left = splitPoint - d1;\n var right = d2 - splitPoint;\n if (left <= right) {\n d2 = Math.min(d2 - 1, ~~(splitPoint + right / 2));\n d2 = Math.max(0, d2);\n }\n else {\n d2 = Math.max(d1, ~~(splitPoint - 1 - left / 2));\n d2 = Math.min(vbox.dimension[dim2], d2);\n }\n while (!accSum[d2])\n d2++;\n var c2 = reverseSum[d2];\n while (!c2 && accSum[d2 - 1])\n c2 = reverseSum[--d2];\n vbox1.dimension[dim2] = d2;\n vbox2.dimension[dim1] = d2 + 1;\n return [vbox1, vbox2];\n }\n return doCut(maxd);\n };\n return VBox;\n}());\nexports.default = VBox;\n//# sourceMappingURL=vbox.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getColorIndex = exports.getColorDiffStatus = exports.hexDiff = exports.rgbDiff = exports.deltaE94 = exports.rgbToCIELab = exports.xyzToCIELab = exports.rgbToXyz = exports.hslToRgb = exports.rgbToHsl = exports.rgbToHex = exports.hexToRgb = exports.defer = exports.RSHIFT = exports.SIGBITS = exports.DELTAE94_DIFF_STATUS = void 0;\nexports.DELTAE94_DIFF_STATUS = {\n NA: 0,\n PERFECT: 1,\n CLOSE: 2,\n GOOD: 10,\n SIMILAR: 50\n};\nexports.SIGBITS = 5;\nexports.RSHIFT = 8 - exports.SIGBITS;\nfunction defer() {\n var resolve;\n var reject;\n // eslint-disable-next-line promise/param-names\n var promise = new Promise(function (_resolve, _reject) {\n resolve = _resolve;\n reject = _reject;\n });\n // @ts-ignore\n return { resolve: resolve, reject: reject, promise: promise };\n}\nexports.defer = defer;\nfunction hexToRgb(hex) {\n var m = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return m === null ? null : [m[1], m[2], m[3]].map(function (s) { return parseInt(s, 16); });\n}\nexports.hexToRgb = hexToRgb;\nfunction rgbToHex(r, g, b) {\n return '#' + ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1, 7);\n}\nexports.rgbToHex = rgbToHex;\nfunction rgbToHsl(r, g, b) {\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n if (max === min) {\n h = s = 0;\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n // @ts-ignore\n h /= 6;\n }\n // @ts-ignore\n return [h, s, l];\n}\nexports.rgbToHsl = rgbToHsl;\nfunction hslToRgb(h, s, l) {\n var r;\n var g;\n var b;\n function hue2rgb(p, q, t) {\n if (t < 0)\n t += 1;\n if (t > 1)\n t -= 1;\n if (t < 1 / 6)\n return p + (q - p) * 6 * t;\n if (t < 1 / 2)\n return q;\n if (t < 2 / 3)\n return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n if (s === 0) {\n r = g = b = l;\n }\n else {\n var q = l < 0.5 ? l * (1 + s) : l + s - (l * s);\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - (1 / 3));\n }\n return [\n r * 255,\n g * 255,\n b * 255\n ];\n}\nexports.hslToRgb = hslToRgb;\nfunction rgbToXyz(r, g, b) {\n r /= 255;\n g /= 255;\n b /= 255;\n r = r > 0.04045 ? Math.pow((r + 0.005) / 1.055, 2.4) : r / 12.92;\n g = g > 0.04045 ? Math.pow((g + 0.005) / 1.055, 2.4) : g / 12.92;\n b = b > 0.04045 ? Math.pow((b + 0.005) / 1.055, 2.4) : b / 12.92;\n r *= 100;\n g *= 100;\n b *= 100;\n var x = r * 0.4124 + g * 0.3576 + b * 0.1805;\n var y = r * 0.2126 + g * 0.7152 + b * 0.0722;\n var z = r * 0.0193 + g * 0.1192 + b * 0.9505;\n return [x, y, z];\n}\nexports.rgbToXyz = rgbToXyz;\nfunction xyzToCIELab(x, y, z) {\n var REF_X = 95.047;\n var REF_Y = 100;\n var REF_Z = 108.883;\n x /= REF_X;\n y /= REF_Y;\n z /= REF_Z;\n x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;\n y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;\n z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;\n var L = 116 * y - 16;\n var a = 500 * (x - y);\n var b = 200 * (y - z);\n return [L, a, b];\n}\nexports.xyzToCIELab = xyzToCIELab;\nfunction rgbToCIELab(r, g, b) {\n var _a = rgbToXyz(r, g, b), x = _a[0], y = _a[1], z = _a[2];\n return xyzToCIELab(x, y, z);\n}\nexports.rgbToCIELab = rgbToCIELab;\nfunction deltaE94(lab1, lab2) {\n var WEIGHT_L = 1;\n var WEIGHT_C = 1;\n var WEIGHT_H = 1;\n var L1 = lab1[0], a1 = lab1[1], b1 = lab1[2];\n var L2 = lab2[0], a2 = lab2[1], b2 = lab2[2];\n var dL = L1 - L2;\n var da = a1 - a2;\n var db = b1 - b2;\n var xC1 = Math.sqrt(a1 * a1 + b1 * b1);\n var xC2 = Math.sqrt(a2 * a2 + b2 * b2);\n var xDL = L2 - L1;\n var xDC = xC2 - xC1;\n var xDE = Math.sqrt(dL * dL + da * da + db * db);\n var xDH = (Math.sqrt(xDE) > Math.sqrt(Math.abs(xDL)) + Math.sqrt(Math.abs(xDC)))\n ? Math.sqrt(xDE * xDE - xDL * xDL - xDC * xDC)\n : 0;\n var xSC = 1 + 0.045 * xC1;\n var xSH = 1 + 0.015 * xC1;\n xDL /= WEIGHT_L;\n xDC /= WEIGHT_C * xSC;\n xDH /= WEIGHT_H * xSH;\n return Math.sqrt(xDL * xDL + xDC * xDC + xDH * xDH);\n}\nexports.deltaE94 = deltaE94;\nfunction rgbDiff(rgb1, rgb2) {\n var lab1 = rgbToCIELab.apply(undefined, rgb1);\n var lab2 = rgbToCIELab.apply(undefined, rgb2);\n return deltaE94(lab1, lab2);\n}\nexports.rgbDiff = rgbDiff;\nfunction hexDiff(hex1, hex2) {\n var rgb1 = hexToRgb(hex1);\n var rgb2 = hexToRgb(hex2);\n return rgbDiff(rgb1, rgb2);\n}\nexports.hexDiff = hexDiff;\nfunction getColorDiffStatus(d) {\n if (d < exports.DELTAE94_DIFF_STATUS.NA) {\n return 'N/A';\n }\n // Not perceptible by human eyes\n if (d <= exports.DELTAE94_DIFF_STATUS.PERFECT) {\n return 'Perfect';\n }\n // Perceptible through close observation\n if (d <= exports.DELTAE94_DIFF_STATUS.CLOSE) {\n return 'Close';\n }\n // Perceptible at a glance\n if (d <= exports.DELTAE94_DIFF_STATUS.GOOD) {\n return 'Good';\n }\n // Colors are more similar than opposite\n if (d < exports.DELTAE94_DIFF_STATUS.SIMILAR) {\n return 'Similar';\n }\n return 'Wrong';\n}\nexports.getColorDiffStatus = getColorDiffStatus;\nfunction getColorIndex(r, g, b) {\n return (r << (2 * exports.SIGBITS)) + (g << exports.SIGBITS) + b;\n}\nexports.getColorIndex = getColorIndex;\n//# sourceMappingURL=util.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar color_1 = require(\"./color\");\nvar builder_1 = __importDefault(require(\"./builder\"));\nvar Util = __importStar(require(\"./util\"));\nvar Quantizer = __importStar(require(\"./quantizer\"));\nvar Generator = __importStar(require(\"./generator\"));\nvar Filters = __importStar(require(\"./filter\"));\nvar defaults = require(\"lodash/defaults\");\nvar Vibrant = /** @class */ (function () {\n function Vibrant(_src, opts) {\n this._src = _src;\n this.opts = defaults({}, opts, Vibrant.DefaultOpts);\n this.opts.combinedFilter = Filters.combineFilters(this.opts.filters);\n }\n Vibrant.from = function (src) {\n return new builder_1.default(src);\n };\n Vibrant.prototype._process = function (image, opts) {\n var quantizer = opts.quantizer, generator = opts.generator;\n image.scaleDown(opts);\n return image.applyFilter(opts.combinedFilter)\n .then(function (imageData) { return quantizer(imageData.data, opts); })\n .then(function (colors) { return color_1.Swatch.applyFilter(colors, opts.combinedFilter); })\n .then(function (colors) { return Promise.resolve(generator(colors)); });\n };\n Vibrant.prototype.palette = function () {\n return this.swatches();\n };\n Vibrant.prototype.swatches = function () {\n return this._palette;\n };\n Vibrant.prototype.getPalette = function (cb) {\n var _this = this;\n var image = new this.opts.ImageClass();\n var result = image.load(this._src)\n .then(function (image) { return _this._process(image, _this.opts); })\n .then(function (palette) {\n _this._palette = palette;\n image.remove();\n return palette;\n }, function (err) {\n image.remove();\n throw err;\n });\n if (cb)\n result.then(function (palette) { return cb(null, palette); }, function (err) { return cb(err); });\n return result;\n };\n Vibrant.Builder = builder_1.default;\n Vibrant.Quantizer = Quantizer;\n Vibrant.Generator = Generator;\n Vibrant.Filter = Filters;\n Vibrant.Util = Util;\n Vibrant.Swatch = color_1.Swatch;\n Vibrant.DefaultOpts = {\n colorCount: 64,\n quality: 5,\n generator: Generator.Default,\n ImageClass: null,\n quantizer: Quantizer.MMCQ,\n filters: [Filters.Default]\n };\n return Vibrant;\n}());\nexports.default = Vibrant;\n//# sourceMappingURL=vibrant.js.map","var hasMap = typeof Map === 'function' && Map.prototype;\nvar mapSizeDescriptor = Object.getOwnPropertyDescriptor && hasMap ? Object.getOwnPropertyDescriptor(Map.prototype, 'size') : null;\nvar mapSize = hasMap && mapSizeDescriptor && typeof mapSizeDescriptor.get === 'function' ? mapSizeDescriptor.get : null;\nvar mapForEach = hasMap && Map.prototype.forEach;\nvar hasSet = typeof Set === 'function' && Set.prototype;\nvar setSizeDescriptor = Object.getOwnPropertyDescriptor && hasSet ? Object.getOwnPropertyDescriptor(Set.prototype, 'size') : null;\nvar setSize = hasSet && setSizeDescriptor && typeof setSizeDescriptor.get === 'function' ? setSizeDescriptor.get : null;\nvar setForEach = hasSet && Set.prototype.forEach;\nvar hasWeakMap = typeof WeakMap === 'function' && WeakMap.prototype;\nvar weakMapHas = hasWeakMap ? WeakMap.prototype.has : null;\nvar hasWeakSet = typeof WeakSet === 'function' && WeakSet.prototype;\nvar weakSetHas = hasWeakSet ? WeakSet.prototype.has : null;\nvar hasWeakRef = typeof WeakRef === 'function' && WeakRef.prototype;\nvar weakRefDeref = hasWeakRef ? WeakRef.prototype.deref : null;\nvar booleanValueOf = Boolean.prototype.valueOf;\nvar objectToString = Object.prototype.toString;\nvar functionToString = Function.prototype.toString;\nvar $match = String.prototype.match;\nvar $slice = String.prototype.slice;\nvar $replace = String.prototype.replace;\nvar $toUpperCase = String.prototype.toUpperCase;\nvar $toLowerCase = String.prototype.toLowerCase;\nvar $test = RegExp.prototype.test;\nvar $concat = Array.prototype.concat;\nvar $join = Array.prototype.join;\nvar $arrSlice = Array.prototype.slice;\nvar $floor = Math.floor;\nvar bigIntValueOf = typeof BigInt === 'function' ? BigInt.prototype.valueOf : null;\nvar gOPS = Object.getOwnPropertySymbols;\nvar symToString = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? Symbol.prototype.toString : null;\nvar hasShammedSymbols = typeof Symbol === 'function' && typeof Symbol.iterator === 'object';\n// ie, `has-tostringtag/shams\nvar toStringTag = typeof Symbol === 'function' && Symbol.toStringTag && (typeof Symbol.toStringTag === hasShammedSymbols ? 'object' : 'symbol')\n ? Symbol.toStringTag\n : null;\nvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\nvar gPO = (typeof Reflect === 'function' ? Reflect.getPrototypeOf : Object.getPrototypeOf) || (\n [].__proto__ === Array.prototype // eslint-disable-line no-proto\n ? function (O) {\n return O.__proto__; // eslint-disable-line no-proto\n }\n : null\n);\n\nfunction addNumericSeparator(num, str) {\n if (\n num === Infinity\n || num === -Infinity\n || num !== num\n || (num && num > -1000 && num < 1000)\n || $test.call(/e/, str)\n ) {\n return str;\n }\n var sepRegex = /[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;\n if (typeof num === 'number') {\n var int = num < 0 ? -$floor(-num) : $floor(num); // trunc(num)\n if (int !== num) {\n var intStr = String(int);\n var dec = $slice.call(str, intStr.length + 1);\n return $replace.call(intStr, sepRegex, '$&_') + '.' + $replace.call($replace.call(dec, /([0-9]{3})/g, '$&_'), /_$/, '');\n }\n }\n return $replace.call(str, sepRegex, '$&_');\n}\n\nvar utilInspect = require('./util.inspect');\nvar inspectCustom = utilInspect.custom;\nvar inspectSymbol = isSymbol(inspectCustom) ? inspectCustom : null;\n\nmodule.exports = function inspect_(obj, options, depth, seen) {\n var opts = options || {};\n\n if (has(opts, 'quoteStyle') && (opts.quoteStyle !== 'single' && opts.quoteStyle !== 'double')) {\n throw new TypeError('option \"quoteStyle\" must be \"single\" or \"double\"');\n }\n if (\n has(opts, 'maxStringLength') && (typeof opts.maxStringLength === 'number'\n ? opts.maxStringLength < 0 && opts.maxStringLength !== Infinity\n : opts.maxStringLength !== null\n )\n ) {\n throw new TypeError('option \"maxStringLength\", if provided, must be a positive integer, Infinity, or `null`');\n }\n var customInspect = has(opts, 'customInspect') ? opts.customInspect : true;\n if (typeof customInspect !== 'boolean' && customInspect !== 'symbol') {\n throw new TypeError('option \"customInspect\", if provided, must be `true`, `false`, or `\\'symbol\\'`');\n }\n\n if (\n has(opts, 'indent')\n && opts.indent !== null\n && opts.indent !== '\\t'\n && !(parseInt(opts.indent, 10) === opts.indent && opts.indent > 0)\n ) {\n throw new TypeError('option \"indent\" must be \"\\\\t\", an integer > 0, or `null`');\n }\n if (has(opts, 'numericSeparator') && typeof opts.numericSeparator !== 'boolean') {\n throw new TypeError('option \"numericSeparator\", if provided, must be `true` or `false`');\n }\n var numericSeparator = opts.numericSeparator;\n\n if (typeof obj === 'undefined') {\n return 'undefined';\n }\n if (obj === null) {\n return 'null';\n }\n if (typeof obj === 'boolean') {\n return obj ? 'true' : 'false';\n }\n\n if (typeof obj === 'string') {\n return inspectString(obj, opts);\n }\n if (typeof obj === 'number') {\n if (obj === 0) {\n return Infinity / obj > 0 ? '0' : '-0';\n }\n var str = String(obj);\n return numericSeparator ? addNumericSeparator(obj, str) : str;\n }\n if (typeof obj === 'bigint') {\n var bigIntStr = String(obj) + 'n';\n return numericSeparator ? addNumericSeparator(obj, bigIntStr) : bigIntStr;\n }\n\n var maxDepth = typeof opts.depth === 'undefined' ? 5 : opts.depth;\n if (typeof depth === 'undefined') { depth = 0; }\n if (depth >= maxDepth && maxDepth > 0 && typeof obj === 'object') {\n return isArray(obj) ? '[Array]' : '[Object]';\n }\n\n var indent = getIndent(opts, depth);\n\n if (typeof seen === 'undefined') {\n seen = [];\n } else if (indexOf(seen, obj) >= 0) {\n return '[Circular]';\n }\n\n function inspect(value, from, noIndent) {\n if (from) {\n seen = $arrSlice.call(seen);\n seen.push(from);\n }\n if (noIndent) {\n var newOpts = {\n depth: opts.depth\n };\n if (has(opts, 'quoteStyle')) {\n newOpts.quoteStyle = opts.quoteStyle;\n }\n return inspect_(value, newOpts, depth + 1, seen);\n }\n return inspect_(value, opts, depth + 1, seen);\n }\n\n if (typeof obj === 'function' && !isRegExp(obj)) { // in older engines, regexes are callable\n var name = nameOf(obj);\n var keys = arrObjKeys(obj, inspect);\n return '[Function' + (name ? ': ' + name : ' (anonymous)') + ']' + (keys.length > 0 ? ' { ' + $join.call(keys, ', ') + ' }' : '');\n }\n if (isSymbol(obj)) {\n var symString = hasShammedSymbols ? $replace.call(String(obj), /^(Symbol\\(.*\\))_[^)]*$/, '$1') : symToString.call(obj);\n return typeof obj === 'object' && !hasShammedSymbols ? markBoxed(symString) : symString;\n }\n if (isElement(obj)) {\n var s = '<' + $toLowerCase.call(String(obj.nodeName));\n var attrs = obj.attributes || [];\n for (var i = 0; i < attrs.length; i++) {\n s += ' ' + attrs[i].name + '=' + wrapQuotes(quote(attrs[i].value), 'double', opts);\n }\n s += '>';\n if (obj.childNodes && obj.childNodes.length) { s += '...'; }\n s += '</' + $toLowerCase.call(String(obj.nodeName)) + '>';\n return s;\n }\n if (isArray(obj)) {\n if (obj.length === 0) { return '[]'; }\n var xs = arrObjKeys(obj, inspect);\n if (indent && !singleLineValues(xs)) {\n return '[' + indentedJoin(xs, indent) + ']';\n }\n return '[ ' + $join.call(xs, ', ') + ' ]';\n }\n if (isError(obj)) {\n var parts = arrObjKeys(obj, inspect);\n if (!('cause' in Error.prototype) && 'cause' in obj && !isEnumerable.call(obj, 'cause')) {\n return '{ [' + String(obj) + '] ' + $join.call($concat.call('[cause]: ' + inspect(obj.cause), parts), ', ') + ' }';\n }\n if (parts.length === 0) { return '[' + String(obj) + ']'; }\n return '{ [' + String(obj) + '] ' + $join.call(parts, ', ') + ' }';\n }\n if (typeof obj === 'object' && customInspect) {\n if (inspectSymbol && typeof obj[inspectSymbol] === 'function' && utilInspect) {\n return utilInspect(obj, { depth: maxDepth - depth });\n } else if (customInspect !== 'symbol' && typeof obj.inspect === 'function') {\n return obj.inspect();\n }\n }\n if (isMap(obj)) {\n var mapParts = [];\n if (mapForEach) {\n mapForEach.call(obj, function (value, key) {\n mapParts.push(inspect(key, obj, true) + ' => ' + inspect(value, obj));\n });\n }\n return collectionOf('Map', mapSize.call(obj), mapParts, indent);\n }\n if (isSet(obj)) {\n var setParts = [];\n if (setForEach) {\n setForEach.call(obj, function (value) {\n setParts.push(inspect(value, obj));\n });\n }\n return collectionOf('Set', setSize.call(obj), setParts, indent);\n }\n if (isWeakMap(obj)) {\n return weakCollectionOf('WeakMap');\n }\n if (isWeakSet(obj)) {\n return weakCollectionOf('WeakSet');\n }\n if (isWeakRef(obj)) {\n return weakCollectionOf('WeakRef');\n }\n if (isNumber(obj)) {\n return markBoxed(inspect(Number(obj)));\n }\n if (isBigInt(obj)) {\n return markBoxed(inspect(bigIntValueOf.call(obj)));\n }\n if (isBoolean(obj)) {\n return markBoxed(booleanValueOf.call(obj));\n }\n if (isString(obj)) {\n return markBoxed(inspect(String(obj)));\n }\n // note: in IE 8, sometimes `global !== window` but both are the prototypes of each other\n /* eslint-env browser */\n if (typeof window !== 'undefined' && obj === window) {\n return '{ [object Window] }';\n }\n if (obj === global) {\n return '{ [object globalThis] }';\n }\n if (!isDate(obj) && !isRegExp(obj)) {\n var ys = arrObjKeys(obj, inspect);\n var isPlainObject = gPO ? gPO(obj) === Object.prototype : obj instanceof Object || obj.constructor === Object;\n var protoTag = obj instanceof Object ? '' : 'null prototype';\n var stringTag = !isPlainObject && toStringTag && Object(obj) === obj && toStringTag in obj ? $slice.call(toStr(obj), 8, -1) : protoTag ? 'Object' : '';\n var constructorTag = isPlainObject || typeof obj.constructor !== 'function' ? '' : obj.constructor.name ? obj.constructor.name + ' ' : '';\n var tag = constructorTag + (stringTag || protoTag ? '[' + $join.call($concat.call([], stringTag || [], protoTag || []), ': ') + '] ' : '');\n if (ys.length === 0) { return tag + '{}'; }\n if (indent) {\n return tag + '{' + indentedJoin(ys, indent) + '}';\n }\n return tag + '{ ' + $join.call(ys, ', ') + ' }';\n }\n return String(obj);\n};\n\nfunction wrapQuotes(s, defaultStyle, opts) {\n var quoteChar = (opts.quoteStyle || defaultStyle) === 'double' ? '\"' : \"'\";\n return quoteChar + s + quoteChar;\n}\n\nfunction quote(s) {\n return $replace.call(String(s), /\"/g, '"');\n}\n\nfunction isArray(obj) { return toStr(obj) === '[object Array]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isDate(obj) { return toStr(obj) === '[object Date]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isRegExp(obj) { return toStr(obj) === '[object RegExp]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isError(obj) { return toStr(obj) === '[object Error]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isString(obj) { return toStr(obj) === '[object String]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isNumber(obj) { return toStr(obj) === '[object Number]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\nfunction isBoolean(obj) { return toStr(obj) === '[object Boolean]' && (!toStringTag || !(typeof obj === 'object' && toStringTag in obj)); }\n\n// Symbol and BigInt do have Symbol.toStringTag by spec, so that can't be used to eliminate false positives\nfunction isSymbol(obj) {\n if (hasShammedSymbols) {\n return obj && typeof obj === 'object' && obj instanceof Symbol;\n }\n if (typeof obj === 'symbol') {\n return true;\n }\n if (!obj || typeof obj !== 'object' || !symToString) {\n return false;\n }\n try {\n symToString.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isBigInt(obj) {\n if (!obj || typeof obj !== 'object' || !bigIntValueOf) {\n return false;\n }\n try {\n bigIntValueOf.call(obj);\n return true;\n } catch (e) {}\n return false;\n}\n\nvar hasOwn = Object.prototype.hasOwnProperty || function (key) { return key in this; };\nfunction has(obj, key) {\n return hasOwn.call(obj, key);\n}\n\nfunction toStr(obj) {\n return objectToString.call(obj);\n}\n\nfunction nameOf(f) {\n if (f.name) { return f.name; }\n var m = $match.call(functionToString.call(f), /^function\\s*([\\w$]+)/);\n if (m) { return m[1]; }\n return null;\n}\n\nfunction indexOf(xs, x) {\n if (xs.indexOf) { return xs.indexOf(x); }\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) { return i; }\n }\n return -1;\n}\n\nfunction isMap(x) {\n if (!mapSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n mapSize.call(x);\n try {\n setSize.call(x);\n } catch (s) {\n return true;\n }\n return x instanceof Map; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakMap(x) {\n if (!weakMapHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakMapHas.call(x, weakMapHas);\n try {\n weakSetHas.call(x, weakSetHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakMap; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakRef(x) {\n if (!weakRefDeref || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakRefDeref.call(x);\n return true;\n } catch (e) {}\n return false;\n}\n\nfunction isSet(x) {\n if (!setSize || !x || typeof x !== 'object') {\n return false;\n }\n try {\n setSize.call(x);\n try {\n mapSize.call(x);\n } catch (m) {\n return true;\n }\n return x instanceof Set; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isWeakSet(x) {\n if (!weakSetHas || !x || typeof x !== 'object') {\n return false;\n }\n try {\n weakSetHas.call(x, weakSetHas);\n try {\n weakMapHas.call(x, weakMapHas);\n } catch (s) {\n return true;\n }\n return x instanceof WeakSet; // core-js workaround, pre-v2.5.0\n } catch (e) {}\n return false;\n}\n\nfunction isElement(x) {\n if (!x || typeof x !== 'object') { return false; }\n if (typeof HTMLElement !== 'undefined' && x instanceof HTMLElement) {\n return true;\n }\n return typeof x.nodeName === 'string' && typeof x.getAttribute === 'function';\n}\n\nfunction inspectString(str, opts) {\n if (str.length > opts.maxStringLength) {\n var remaining = str.length - opts.maxStringLength;\n var trailer = '... ' + remaining + ' more character' + (remaining > 1 ? 's' : '');\n return inspectString($slice.call(str, 0, opts.maxStringLength), opts) + trailer;\n }\n // eslint-disable-next-line no-control-regex\n var s = $replace.call($replace.call(str, /(['\\\\])/g, '\\\\$1'), /[\\x00-\\x1f]/g, lowbyte);\n return wrapQuotes(s, 'single', opts);\n}\n\nfunction lowbyte(c) {\n var n = c.charCodeAt(0);\n var x = {\n 8: 'b',\n 9: 't',\n 10: 'n',\n 12: 'f',\n 13: 'r'\n }[n];\n if (x) { return '\\\\' + x; }\n return '\\\\x' + (n < 0x10 ? '0' : '') + $toUpperCase.call(n.toString(16));\n}\n\nfunction markBoxed(str) {\n return 'Object(' + str + ')';\n}\n\nfunction weakCollectionOf(type) {\n return type + ' { ? }';\n}\n\nfunction collectionOf(type, size, entries, indent) {\n var joinedEntries = indent ? indentedJoin(entries, indent) : $join.call(entries, ', ');\n return type + ' (' + size + ') {' + joinedEntries + '}';\n}\n\nfunction singleLineValues(xs) {\n for (var i = 0; i < xs.length; i++) {\n if (indexOf(xs[i], '\\n') >= 0) {\n return false;\n }\n }\n return true;\n}\n\nfunction getIndent(opts, depth) {\n var baseIndent;\n if (opts.indent === '\\t') {\n baseIndent = '\\t';\n } else if (typeof opts.indent === 'number' && opts.indent > 0) {\n baseIndent = $join.call(Array(opts.indent + 1), ' ');\n } else {\n return null;\n }\n return {\n base: baseIndent,\n prev: $join.call(Array(depth + 1), baseIndent)\n };\n}\n\nfunction indentedJoin(xs, indent) {\n if (xs.length === 0) { return ''; }\n var lineJoiner = '\\n' + indent.prev + indent.base;\n return lineJoiner + $join.call(xs, ',' + lineJoiner) + '\\n' + indent.prev;\n}\n\nfunction arrObjKeys(obj, inspect) {\n var isArr = isArray(obj);\n var xs = [];\n if (isArr) {\n xs.length = obj.length;\n for (var i = 0; i < obj.length; i++) {\n xs[i] = has(obj, i) ? inspect(obj[i], obj) : '';\n }\n }\n var syms = typeof gOPS === 'function' ? gOPS(obj) : [];\n var symMap;\n if (hasShammedSymbols) {\n symMap = {};\n for (var k = 0; k < syms.length; k++) {\n symMap['$' + syms[k]] = syms[k];\n }\n }\n\n for (var key in obj) { // eslint-disable-line no-restricted-syntax\n if (!has(obj, key)) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (isArr && String(Number(key)) === key && key < obj.length) { continue; } // eslint-disable-line no-restricted-syntax, no-continue\n if (hasShammedSymbols && symMap['$' + key] instanceof Symbol) {\n // this is to prevent shammed Symbols, which are stored as strings, from being included in the string key section\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n } else if ($test.call(/[^\\w$]/, key)) {\n xs.push(inspect(key, obj) + ': ' + inspect(obj[key], obj));\n } else {\n xs.push(key + ': ' + inspect(obj[key], obj));\n }\n }\n if (typeof gOPS === 'function') {\n for (var j = 0; j < syms.length; j++) {\n if (isEnumerable.call(obj, syms[j])) {\n xs.push('[' + inspect(syms[j]) + ']: ' + inspect(obj[syms[j]], obj));\n }\n }\n }\n return xs;\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\nvar callBound = require('call-bind/callBound');\nvar inspect = require('object-inspect');\n\nvar $TypeError = require('es-errors/type');\nvar $WeakMap = GetIntrinsic('%WeakMap%', true);\nvar $Map = GetIntrinsic('%Map%', true);\n\nvar $weakMapGet = callBound('WeakMap.prototype.get', true);\nvar $weakMapSet = callBound('WeakMap.prototype.set', true);\nvar $weakMapHas = callBound('WeakMap.prototype.has', true);\nvar $mapGet = callBound('Map.prototype.get', true);\nvar $mapSet = callBound('Map.prototype.set', true);\nvar $mapHas = callBound('Map.prototype.has', true);\n\n/*\n* This function traverses the list returning the node corresponding to the given key.\n*\n* That node is also moved to the head of the list, so that if it's accessed again we don't need to traverse the whole list. By doing so, all the recently used nodes can be accessed relatively quickly.\n*/\n/** @type {import('.').listGetNode} */\nvar listGetNode = function (list, key) { // eslint-disable-line consistent-return\n\t/** @type {typeof list | NonNullable<(typeof list)['next']>} */\n\tvar prev = list;\n\t/** @type {(typeof list)['next']} */\n\tvar curr;\n\tfor (; (curr = prev.next) !== null; prev = curr) {\n\t\tif (curr.key === key) {\n\t\t\tprev.next = curr.next;\n\t\t\t// eslint-disable-next-line no-extra-parens\n\t\t\tcurr.next = /** @type {NonNullable<typeof list.next>} */ (list.next);\n\t\t\tlist.next = curr; // eslint-disable-line no-param-reassign\n\t\t\treturn curr;\n\t\t}\n\t}\n};\n\n/** @type {import('.').listGet} */\nvar listGet = function (objects, key) {\n\tvar node = listGetNode(objects, key);\n\treturn node && node.value;\n};\n/** @type {import('.').listSet} */\nvar listSet = function (objects, key, value) {\n\tvar node = listGetNode(objects, key);\n\tif (node) {\n\t\tnode.value = value;\n\t} else {\n\t\t// Prepend the new node to the beginning of the list\n\t\tobjects.next = /** @type {import('.').ListNode<typeof value>} */ ({ // eslint-disable-line no-param-reassign, no-extra-parens\n\t\t\tkey: key,\n\t\t\tnext: objects.next,\n\t\t\tvalue: value\n\t\t});\n\t}\n};\n/** @type {import('.').listHas} */\nvar listHas = function (objects, key) {\n\treturn !!listGetNode(objects, key);\n};\n\n/** @type {import('.')} */\nmodule.exports = function getSideChannel() {\n\t/** @type {WeakMap<object, unknown>} */ var $wm;\n\t/** @type {Map<object, unknown>} */ var $m;\n\t/** @type {import('.').RootNode<unknown>} */ var $o;\n\n\t/** @type {import('.').Channel} */\n\tvar channel = {\n\t\tassert: function (key) {\n\t\t\tif (!channel.has(key)) {\n\t\t\t\tthrow new $TypeError('Side channel does not contain ' + inspect(key));\n\t\t\t}\n\t\t},\n\t\tget: function (key) { // eslint-disable-line consistent-return\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapGet($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapGet($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listGet($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\thas: function (key) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif ($wm) {\n\t\t\t\t\treturn $weakMapHas($wm, key);\n\t\t\t\t}\n\t\t\t} else if ($Map) {\n\t\t\t\tif ($m) {\n\t\t\t\t\treturn $mapHas($m, key);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif ($o) { // eslint-disable-line no-lonely-if\n\t\t\t\t\treturn listHas($o, key);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t},\n\t\tset: function (key, value) {\n\t\t\tif ($WeakMap && key && (typeof key === 'object' || typeof key === 'function')) {\n\t\t\t\tif (!$wm) {\n\t\t\t\t\t$wm = new $WeakMap();\n\t\t\t\t}\n\t\t\t\t$weakMapSet($wm, key, value);\n\t\t\t} else if ($Map) {\n\t\t\t\tif (!$m) {\n\t\t\t\t\t$m = new $Map();\n\t\t\t\t}\n\t\t\t\t$mapSet($m, key, value);\n\t\t\t} else {\n\t\t\t\tif (!$o) {\n\t\t\t\t\t// Initialize the linked list as an empty node, so that we don't have to special-case handling of the first node: we can always refer to it as (previous node).next, instead of something like (list).head\n\t\t\t\t\t$o = { key: {}, next: null };\n\t\t\t\t}\n\t\t\t\tlistSet($o, key, value);\n\t\t\t}\n\t\t}\n\t};\n\treturn channel;\n};\n","/*! https://mths.be/punycode v1.4.1 by @mathias */\n;(function(root) {\n\n\t/** Detect free variables */\n\tvar freeExports = typeof exports == 'object' && exports &&\n\t\t!exports.nodeType && exports;\n\tvar freeModule = typeof module == 'object' && module &&\n\t\t!module.nodeType && module;\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (\n\t\tfreeGlobal.global === freeGlobal ||\n\t\tfreeGlobal.window === freeGlobal ||\n\t\tfreeGlobal.self === freeGlobal\n\t) {\n\t\troot = freeGlobal;\n\t}\n\n\t/**\n\t * The `punycode` object.\n\t * @name punycode\n\t * @type Object\n\t */\n\tvar punycode,\n\n\t/** Highest positive signed 32-bit float value */\n\tmaxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1\n\n\t/** Bootstring parameters */\n\tbase = 36,\n\ttMin = 1,\n\ttMax = 26,\n\tskew = 38,\n\tdamp = 700,\n\tinitialBias = 72,\n\tinitialN = 128, // 0x80\n\tdelimiter = '-', // '\\x2D'\n\n\t/** Regular expressions */\n\tregexPunycode = /^xn--/,\n\tregexNonASCII = /[^\\x20-\\x7E]/, // unprintable ASCII chars + non-ASCII chars\n\tregexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g, // RFC 3490 separators\n\n\t/** Error messages */\n\terrors = {\n\t\t'overflow': 'Overflow: input needs wider integers to process',\n\t\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t\t'invalid-input': 'Invalid input'\n\t},\n\n\t/** Convenience shortcuts */\n\tbaseMinusTMin = base - tMin,\n\tfloor = Math.floor,\n\tstringFromCharCode = String.fromCharCode,\n\n\t/** Temporary variable */\n\tkey;\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/**\n\t * A generic error utility function.\n\t * @private\n\t * @param {String} type The error type.\n\t * @returns {Error} Throws a `RangeError` with the applicable error message.\n\t */\n\tfunction error(type) {\n\t\tthrow new RangeError(errors[type]);\n\t}\n\n\t/**\n\t * A generic `Array#map` utility function.\n\t * @private\n\t * @param {Array} array The array to iterate over.\n\t * @param {Function} callback The function that gets called for every array\n\t * item.\n\t * @returns {Array} A new array of values returned by the callback function.\n\t */\n\tfunction map(array, fn) {\n\t\tvar length = array.length;\n\t\tvar result = [];\n\t\twhile (length--) {\n\t\t\tresult[length] = fn(array[length]);\n\t\t}\n\t\treturn result;\n\t}\n\n\t/**\n\t * A simple `Array#map`-like wrapper to work with domain name strings or email\n\t * addresses.\n\t * @private\n\t * @param {String} domain The domain name or email address.\n\t * @param {Function} callback The function that gets called for every\n\t * character.\n\t * @returns {Array} A new string of characters returned by the callback\n\t * function.\n\t */\n\tfunction mapDomain(string, fn) {\n\t\tvar parts = string.split('@');\n\t\tvar result = '';\n\t\tif (parts.length > 1) {\n\t\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t\t// the local part (i.e. everything up to `@`) intact.\n\t\t\tresult = parts[0] + '@';\n\t\t\tstring = parts[1];\n\t\t}\n\t\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\t\tstring = string.replace(regexSeparators, '\\x2E');\n\t\tvar labels = string.split('.');\n\t\tvar encoded = map(labels, fn).join('.');\n\t\treturn result + encoded;\n\t}\n\n\t/**\n\t * Creates an array containing the numeric code points of each Unicode\n\t * character in the string. While JavaScript uses UCS-2 internally,\n\t * this function will convert a pair of surrogate halves (each of which\n\t * UCS-2 exposes as separate characters) into a single code point,\n\t * matching UTF-16.\n\t * @see `punycode.ucs2.encode`\n\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t * @memberOf punycode.ucs2\n\t * @name decode\n\t * @param {String} string The Unicode input string (UCS-2).\n\t * @returns {Array} The new array of code points.\n\t */\n\tfunction ucs2decode(string) {\n\t\tvar output = [],\n\t\t counter = 0,\n\t\t length = string.length,\n\t\t value,\n\t\t extra;\n\t\twhile (counter < length) {\n\t\t\tvalue = string.charCodeAt(counter++);\n\t\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t\t// high surrogate, and there is a next character\n\t\t\t\textra = string.charCodeAt(counter++);\n\t\t\t\tif ((extra & 0xFC00) == 0xDC00) { // low surrogate\n\t\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t\t} else {\n\t\t\t\t\t// unmatched surrogate; only append this code unit, in case the next\n\t\t\t\t\t// code unit is the high surrogate of a surrogate pair\n\t\t\t\t\toutput.push(value);\n\t\t\t\t\tcounter--;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\toutput.push(value);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t}\n\n\t/**\n\t * Creates a string based on an array of numeric code points.\n\t * @see `punycode.ucs2.decode`\n\t * @memberOf punycode.ucs2\n\t * @name encode\n\t * @param {Array} codePoints The array of numeric code points.\n\t * @returns {String} The new Unicode string (UCS-2).\n\t */\n\tfunction ucs2encode(array) {\n\t\treturn map(array, function(value) {\n\t\t\tvar output = '';\n\t\t\tif (value > 0xFFFF) {\n\t\t\t\tvalue -= 0x10000;\n\t\t\t\toutput += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);\n\t\t\t\tvalue = 0xDC00 | value & 0x3FF;\n\t\t\t}\n\t\t\toutput += stringFromCharCode(value);\n\t\t\treturn output;\n\t\t}).join('');\n\t}\n\n\t/**\n\t * Converts a basic code point into a digit/integer.\n\t * @see `digitToBasic()`\n\t * @private\n\t * @param {Number} codePoint The basic numeric code point value.\n\t * @returns {Number} The numeric value of a basic code point (for use in\n\t * representing integers) in the range `0` to `base - 1`, or `base` if\n\t * the code point does not represent a value.\n\t */\n\tfunction basicToDigit(codePoint) {\n\t\tif (codePoint - 48 < 10) {\n\t\t\treturn codePoint - 22;\n\t\t}\n\t\tif (codePoint - 65 < 26) {\n\t\t\treturn codePoint - 65;\n\t\t}\n\t\tif (codePoint - 97 < 26) {\n\t\t\treturn codePoint - 97;\n\t\t}\n\t\treturn base;\n\t}\n\n\t/**\n\t * Converts a digit/integer into a basic code point.\n\t * @see `basicToDigit()`\n\t * @private\n\t * @param {Number} digit The numeric value of a basic code point.\n\t * @returns {Number} The basic code point whose value (when used for\n\t * representing integers) is `digit`, which needs to be in the range\n\t * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n\t * used; else, the lowercase form is used. The behavior is undefined\n\t * if `flag` is non-zero and `digit` has no uppercase form.\n\t */\n\tfunction digitToBasic(digit, flag) {\n\t\t// 0..25 map to ASCII a..z or A..Z\n\t\t// 26..35 map to ASCII 0..9\n\t\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n\t}\n\n\t/**\n\t * Bias adaptation function as per section 3.4 of RFC 3492.\n\t * https://tools.ietf.org/html/rfc3492#section-3.4\n\t * @private\n\t */\n\tfunction adapt(delta, numPoints, firstTime) {\n\t\tvar k = 0;\n\t\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\t\tdelta += floor(delta / numPoints);\n\t\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\t\tdelta = floor(delta / baseMinusTMin);\n\t\t}\n\t\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n\t}\n\n\t/**\n\t * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n\t * symbols.\n\t * @memberOf punycode\n\t * @param {String} input The Punycode string of ASCII-only symbols.\n\t * @returns {String} The resulting string of Unicode symbols.\n\t */\n\tfunction decode(input) {\n\t\t// Don't use UCS-2\n\t\tvar output = [],\n\t\t inputLength = input.length,\n\t\t out,\n\t\t i = 0,\n\t\t n = initialN,\n\t\t bias = initialBias,\n\t\t basic,\n\t\t j,\n\t\t index,\n\t\t oldi,\n\t\t w,\n\t\t k,\n\t\t digit,\n\t\t t,\n\t\t /** Cached calculation results */\n\t\t baseMinusT;\n\n\t\t// Handle the basic code points: let `basic` be the number of input code\n\t\t// points before the last delimiter, or `0` if there is none, then copy\n\t\t// the first basic code points to the output.\n\n\t\tbasic = input.lastIndexOf(delimiter);\n\t\tif (basic < 0) {\n\t\t\tbasic = 0;\n\t\t}\n\n\t\tfor (j = 0; j < basic; ++j) {\n\t\t\t// if it's not a basic code point\n\t\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\t\terror('not-basic');\n\t\t\t}\n\t\t\toutput.push(input.charCodeAt(j));\n\t\t}\n\n\t\t// Main decoding loop: start just after the last delimiter if any basic code\n\t\t// points were copied; start at the beginning otherwise.\n\n\t\tfor (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t\t// `index` is the index of the next character to be consumed.\n\t\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t\t// which gets added to `i`. The overflow checking is easier\n\t\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t\t// value at the end to obtain `delta`.\n\t\t\tfor (oldi = i, w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\t\tif (index >= inputLength) {\n\t\t\t\t\terror('invalid-input');\n\t\t\t\t}\n\n\t\t\t\tdigit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\ti += digit * w;\n\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\t\tif (digit < t) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tbaseMinusT = base - t;\n\t\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tw *= baseMinusT;\n\n\t\t\t}\n\n\t\t\tout = output.length + 1;\n\t\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t\t// incrementing `n` each time, so we'll fix that now:\n\t\t\tif (floor(i / out) > maxInt - n) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tn += floor(i / out);\n\t\t\ti %= out;\n\n\t\t\t// Insert `n` at position `i` of the output\n\t\t\toutput.splice(i++, 0, n);\n\n\t\t}\n\n\t\treturn ucs2encode(output);\n\t}\n\n\t/**\n\t * Converts a string of Unicode symbols (e.g. a domain name label) to a\n\t * Punycode string of ASCII-only symbols.\n\t * @memberOf punycode\n\t * @param {String} input The string of Unicode symbols.\n\t * @returns {String} The resulting Punycode string of ASCII-only symbols.\n\t */\n\tfunction encode(input) {\n\t\tvar n,\n\t\t delta,\n\t\t handledCPCount,\n\t\t basicLength,\n\t\t bias,\n\t\t j,\n\t\t m,\n\t\t q,\n\t\t k,\n\t\t t,\n\t\t currentValue,\n\t\t output = [],\n\t\t /** `inputLength` will hold the number of code points in `input`. */\n\t\t inputLength,\n\t\t /** Cached calculation results */\n\t\t handledCPCountPlusOne,\n\t\t baseMinusT,\n\t\t qMinusT;\n\n\t\t// Convert the input in UCS-2 to Unicode\n\t\tinput = ucs2decode(input);\n\n\t\t// Cache the length\n\t\tinputLength = input.length;\n\n\t\t// Initialize the state\n\t\tn = initialN;\n\t\tdelta = 0;\n\t\tbias = initialBias;\n\n\t\t// Handle the basic code points\n\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\tcurrentValue = input[j];\n\t\t\tif (currentValue < 0x80) {\n\t\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t\t}\n\t\t}\n\n\t\thandledCPCount = basicLength = output.length;\n\n\t\t// `handledCPCount` is the number of code points that have been handled;\n\t\t// `basicLength` is the number of basic code points.\n\n\t\t// Finish the basic string - if it is not empty - with a delimiter\n\t\tif (basicLength) {\n\t\t\toutput.push(delimiter);\n\t\t}\n\n\t\t// Main encoding loop:\n\t\twhile (handledCPCount < inputLength) {\n\n\t\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t\t// larger one:\n\t\t\tfor (m = maxInt, j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\t\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\t\tm = currentValue;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,\n\t\t\t// but guard against overflow\n\t\t\thandledCPCountPlusOne = handledCPCount + 1;\n\t\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\t\tn = m;\n\n\t\t\tfor (j = 0; j < inputLength; ++j) {\n\t\t\t\tcurrentValue = input[j];\n\n\t\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\t\terror('overflow');\n\t\t\t\t}\n\n\t\t\t\tif (currentValue == n) {\n\t\t\t\t\t// Represent delta as a generalized variable-length integer\n\t\t\t\t\tfor (q = delta, k = base; /* no condition */; k += base) {\n\t\t\t\t\t\tt = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tqMinusT = q - t;\n\t\t\t\t\t\tbaseMinusT = base - t;\n\t\t\t\t\t\toutput.push(\n\t\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t\t);\n\t\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t\t}\n\n\t\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\t\tdelta = 0;\n\t\t\t\t\t++handledCPCount;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t++delta;\n\t\t\t++n;\n\n\t\t}\n\t\treturn output.join('');\n\t}\n\n\t/**\n\t * Converts a Punycode string representing a domain name or an email address\n\t * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n\t * it doesn't matter if you call it on a string that has already been\n\t * converted to Unicode.\n\t * @memberOf punycode\n\t * @param {String} input The Punycoded domain name or email address to\n\t * convert to Unicode.\n\t * @returns {String} The Unicode representation of the given Punycode\n\t * string.\n\t */\n\tfunction toUnicode(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexPunycode.test(string)\n\t\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/**\n\t * Converts a Unicode string representing a domain name or an email address to\n\t * Punycode. Only the non-ASCII parts of the domain name will be converted,\n\t * i.e. it doesn't matter if you call it with a domain that's already in\n\t * ASCII.\n\t * @memberOf punycode\n\t * @param {String} input The domain name or email address to convert, as a\n\t * Unicode string.\n\t * @returns {String} The Punycode representation of the given domain name or\n\t * email address.\n\t */\n\tfunction toASCII(input) {\n\t\treturn mapDomain(input, function(string) {\n\t\t\treturn regexNonASCII.test(string)\n\t\t\t\t? 'xn--' + encode(string)\n\t\t\t\t: string;\n\t\t});\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\t/** Define the public API */\n\tpunycode = {\n\t\t/**\n\t\t * A string representing the current Punycode.js version number.\n\t\t * @memberOf punycode\n\t\t * @type String\n\t\t */\n\t\t'version': '1.4.1',\n\t\t/**\n\t\t * An object of methods to convert from JavaScript's internal character\n\t\t * representation (UCS-2) to Unicode code points, and back.\n\t\t * @see <https://mathiasbynens.be/notes/javascript-encoding>\n\t\t * @memberOf punycode\n\t\t * @type Object\n\t\t */\n\t\t'ucs2': {\n\t\t\t'decode': ucs2decode,\n\t\t\t'encode': ucs2encode\n\t\t},\n\t\t'decode': decode,\n\t\t'encode': encode,\n\t\t'toASCII': toASCII,\n\t\t'toUnicode': toUnicode\n\t};\n\n\t/** Expose `punycode` */\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine('punycode', function() {\n\t\t\treturn punycode;\n\t\t});\n\t} else if (freeExports && freeModule) {\n\t\tif (module.exports == freeExports) {\n\t\t\t// in Node.js, io.js, or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = punycode;\n\t\t} else {\n\t\t\t// in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (key in punycode) {\n\t\t\t\tpunycode.hasOwnProperty(key) && (freeExports[key] = punycode[key]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// in Rhino or a web browser\n\t\troot.punycode = punycode;\n\t}\n\n}(this));\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n RFC1738: 'RFC1738',\n RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n 'default': Format.RFC3986,\n formatters: {\n RFC1738: function (value) {\n return replace.call(value, percentTwenties, '+');\n },\n RFC3986: function (value) {\n return String(value);\n }\n },\n RFC1738: Format.RFC1738,\n RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n formats: formats,\n parse: parse,\n stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n allowDots: false,\n allowEmptyArrays: false,\n allowPrototypes: false,\n allowSparse: false,\n arrayLimit: 20,\n charset: 'utf-8',\n charsetSentinel: false,\n comma: false,\n decodeDotInKeys: true,\n decoder: utils.decode,\n delimiter: '&',\n depth: 5,\n duplicates: 'combine',\n ignoreQueryPrefix: false,\n interpretNumericEntities: false,\n parameterLimit: 1000,\n parseArrays: true,\n plainObjects: false,\n strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n return String.fromCharCode(parseInt(numberStr, 10));\n });\n};\n\nvar parseArrayValue = function (val, options) {\n if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n return val.split(',');\n }\n\n return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('✓')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n var obj = { __proto__: null };\n\n var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n var parts = cleanStr.split(options.delimiter, limit);\n var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n var i;\n\n var charset = options.charset;\n if (options.charsetSentinel) {\n for (i = 0; i < parts.length; ++i) {\n if (parts[i].indexOf('utf8=') === 0) {\n if (parts[i] === charsetSentinel) {\n charset = 'utf-8';\n } else if (parts[i] === isoSentinel) {\n charset = 'iso-8859-1';\n }\n skipIndex = i;\n i = parts.length; // The eslint settings do not allow break;\n }\n }\n }\n\n for (i = 0; i < parts.length; ++i) {\n if (i === skipIndex) {\n continue;\n }\n var part = parts[i];\n\n var bracketEqualsPos = part.indexOf(']=');\n var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n var key, val;\n if (pos === -1) {\n key = options.decoder(part, defaults.decoder, charset, 'key');\n val = options.strictNullHandling ? null : '';\n } else {\n key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n val = utils.maybeMap(\n parseArrayValue(part.slice(pos + 1), options),\n function (encodedVal) {\n return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n }\n );\n }\n\n if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n val = interpretNumericEntities(val);\n }\n\n if (part.indexOf('[]=') > -1) {\n val = isArray(val) ? [val] : val;\n }\n\n var existing = has.call(obj, key);\n if (existing && options.duplicates === 'combine') {\n obj[key] = utils.combine(obj[key], val);\n } else if (!existing || options.duplicates === 'last') {\n obj[key] = val;\n }\n }\n\n return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n for (var i = chain.length - 1; i >= 0; --i) {\n var obj;\n var root = chain[i];\n\n if (root === '[]' && options.parseArrays) {\n obj = options.allowEmptyArrays && leaf === '' ? [] : [].concat(leaf);\n } else {\n obj = options.plainObjects ? Object.create(null) : {};\n var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n var decodedRoot = options.decodeDotInKeys ? cleanRoot.replace(/%2E/g, '.') : cleanRoot;\n var index = parseInt(decodedRoot, 10);\n if (!options.parseArrays && decodedRoot === '') {\n obj = { 0: leaf };\n } else if (\n !isNaN(index)\n && root !== decodedRoot\n && String(index) === decodedRoot\n && index >= 0\n && (options.parseArrays && index <= options.arrayLimit)\n ) {\n obj = [];\n obj[index] = leaf;\n } else if (decodedRoot !== '__proto__') {\n obj[decodedRoot] = leaf;\n }\n }\n\n leaf = obj;\n }\n\n return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n if (!givenKey) {\n return;\n }\n\n // Transform dot notation to bracket notation\n var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n // The regex chunks\n\n var brackets = /(\\[[^[\\]]*])/;\n var child = /(\\[[^[\\]]*])/g;\n\n // Get the parent\n\n var segment = options.depth > 0 && brackets.exec(key);\n var parent = segment ? key.slice(0, segment.index) : key;\n\n // Stash the parent if it exists\n\n var keys = [];\n if (parent) {\n // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n if (!options.plainObjects && has.call(Object.prototype, parent)) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n\n keys.push(parent);\n }\n\n // Loop through children appending to the array until we hit depth\n\n var i = 0;\n while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n i += 1;\n if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n if (!options.allowPrototypes) {\n return;\n }\n }\n keys.push(segment[1]);\n }\n\n // If there's a remainder, just add whatever is left\n\n if (segment) {\n keys.push('[' + key.slice(segment.index) + ']');\n }\n\n return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.decodeDotInKeys !== 'undefined' && typeof opts.decodeDotInKeys !== 'boolean') {\n throw new TypeError('`decodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.decoder !== null && typeof opts.decoder !== 'undefined' && typeof opts.decoder !== 'function') {\n throw new TypeError('Decoder has to be a function.');\n }\n\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n var duplicates = typeof opts.duplicates === 'undefined' ? defaults.duplicates : opts.duplicates;\n\n if (duplicates !== 'combine' && duplicates !== 'first' && duplicates !== 'last') {\n throw new TypeError('The duplicates option must be either combine, first, or last');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.decodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n allowSparse: typeof opts.allowSparse === 'boolean' ? opts.allowSparse : defaults.allowSparse,\n arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n decodeDotInKeys: typeof opts.decodeDotInKeys === 'boolean' ? opts.decodeDotInKeys : defaults.decodeDotInKeys,\n decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n duplicates: duplicates,\n ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n parseArrays: opts.parseArrays !== false,\n plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (str, opts) {\n var options = normalizeParseOptions(opts);\n\n if (str === '' || str === null || typeof str === 'undefined') {\n return options.plainObjects ? Object.create(null) : {};\n }\n\n var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n var obj = options.plainObjects ? Object.create(null) : {};\n\n // Iterate over the keys and setup the new object\n\n var keys = Object.keys(tempObj);\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n obj = utils.merge(obj, newObj, options);\n }\n\n if (options.allowSparse === true) {\n return obj;\n }\n\n return utils.compact(obj);\n};\n","'use strict';\n\nvar getSideChannel = require('side-channel');\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n brackets: function brackets(prefix) {\n return prefix + '[]';\n },\n comma: 'comma',\n indices: function indices(prefix, key) {\n return prefix + '[' + key + ']';\n },\n repeat: function repeat(prefix) {\n return prefix;\n }\n};\n\nvar isArray = Array.isArray;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n addQueryPrefix: false,\n allowDots: false,\n allowEmptyArrays: false,\n arrayFormat: 'indices',\n charset: 'utf-8',\n charsetSentinel: false,\n delimiter: '&',\n encode: true,\n encodeDotInKeys: false,\n encoder: utils.encode,\n encodeValuesOnly: false,\n format: defaultFormat,\n formatter: formats.formatters[defaultFormat],\n // deprecated\n indices: false,\n serializeDate: function serializeDate(date) {\n return toISO.call(date);\n },\n skipNulls: false,\n strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n return typeof v === 'string'\n || typeof v === 'number'\n || typeof v === 'boolean'\n || typeof v === 'symbol'\n || typeof v === 'bigint';\n};\n\nvar sentinel = {};\n\nvar stringify = function stringify(\n object,\n prefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n sideChannel\n) {\n var obj = object;\n\n var tmpSc = sideChannel;\n var step = 0;\n var findFlag = false;\n while ((tmpSc = tmpSc.get(sentinel)) !== void undefined && !findFlag) {\n // Where object last appeared in the ref tree\n var pos = tmpSc.get(object);\n step += 1;\n if (typeof pos !== 'undefined') {\n if (pos === step) {\n throw new RangeError('Cyclic object value');\n } else {\n findFlag = true; // Break while\n }\n }\n if (typeof tmpSc.get(sentinel) === 'undefined') {\n step = 0;\n }\n }\n\n if (typeof filter === 'function') {\n obj = filter(prefix, obj);\n } else if (obj instanceof Date) {\n obj = serializeDate(obj);\n } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n obj = utils.maybeMap(obj, function (value) {\n if (value instanceof Date) {\n return serializeDate(value);\n }\n return value;\n });\n }\n\n if (obj === null) {\n if (strictNullHandling) {\n return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n }\n\n obj = '';\n }\n\n if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n if (encoder) {\n var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n }\n return [formatter(prefix) + '=' + formatter(String(obj))];\n }\n\n var values = [];\n\n if (typeof obj === 'undefined') {\n return values;\n }\n\n var objKeys;\n if (generateArrayPrefix === 'comma' && isArray(obj)) {\n // we need to join elements in\n if (encodeValuesOnly && encoder) {\n obj = utils.maybeMap(obj, encoder);\n }\n objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n } else if (isArray(filter)) {\n objKeys = filter;\n } else {\n var keys = Object.keys(obj);\n objKeys = sort ? keys.sort(sort) : keys;\n }\n\n var encodedPrefix = encodeDotInKeys ? prefix.replace(/\\./g, '%2E') : prefix;\n\n var adjustedPrefix = commaRoundTrip && isArray(obj) && obj.length === 1 ? encodedPrefix + '[]' : encodedPrefix;\n\n if (allowEmptyArrays && isArray(obj) && obj.length === 0) {\n return adjustedPrefix + '[]';\n }\n\n for (var j = 0; j < objKeys.length; ++j) {\n var key = objKeys[j];\n var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n if (skipNulls && value === null) {\n continue;\n }\n\n var encodedKey = allowDots && encodeDotInKeys ? key.replace(/\\./g, '%2E') : key;\n var keyPrefix = isArray(obj)\n ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(adjustedPrefix, encodedKey) : adjustedPrefix\n : adjustedPrefix + (allowDots ? '.' + encodedKey : '[' + encodedKey + ']');\n\n sideChannel.set(object, step);\n var valueSideChannel = getSideChannel();\n valueSideChannel.set(sentinel, sideChannel);\n pushToArray(values, stringify(\n value,\n keyPrefix,\n generateArrayPrefix,\n commaRoundTrip,\n allowEmptyArrays,\n strictNullHandling,\n skipNulls,\n encodeDotInKeys,\n generateArrayPrefix === 'comma' && encodeValuesOnly && isArray(obj) ? null : encoder,\n filter,\n sort,\n allowDots,\n serializeDate,\n format,\n formatter,\n encodeValuesOnly,\n charset,\n valueSideChannel\n ));\n }\n\n return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n if (!opts) {\n return defaults;\n }\n\n if (typeof opts.allowEmptyArrays !== 'undefined' && typeof opts.allowEmptyArrays !== 'boolean') {\n throw new TypeError('`allowEmptyArrays` option can only be `true` or `false`, when provided');\n }\n\n if (typeof opts.encodeDotInKeys !== 'undefined' && typeof opts.encodeDotInKeys !== 'boolean') {\n throw new TypeError('`encodeDotInKeys` option can only be `true` or `false`, when provided');\n }\n\n if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n throw new TypeError('Encoder has to be a function.');\n }\n\n var charset = opts.charset || defaults.charset;\n if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n }\n\n var format = formats['default'];\n if (typeof opts.format !== 'undefined') {\n if (!has.call(formats.formatters, opts.format)) {\n throw new TypeError('Unknown format option provided.');\n }\n format = opts.format;\n }\n var formatter = formats.formatters[format];\n\n var filter = defaults.filter;\n if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n filter = opts.filter;\n }\n\n var arrayFormat;\n if (opts.arrayFormat in arrayPrefixGenerators) {\n arrayFormat = opts.arrayFormat;\n } else if ('indices' in opts) {\n arrayFormat = opts.indices ? 'indices' : 'repeat';\n } else {\n arrayFormat = defaults.arrayFormat;\n }\n\n if ('commaRoundTrip' in opts && typeof opts.commaRoundTrip !== 'boolean') {\n throw new TypeError('`commaRoundTrip` must be a boolean, or absent');\n }\n\n var allowDots = typeof opts.allowDots === 'undefined' ? opts.encodeDotInKeys === true ? true : defaults.allowDots : !!opts.allowDots;\n\n return {\n addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n allowDots: allowDots,\n allowEmptyArrays: typeof opts.allowEmptyArrays === 'boolean' ? !!opts.allowEmptyArrays : defaults.allowEmptyArrays,\n arrayFormat: arrayFormat,\n charset: charset,\n charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n commaRoundTrip: opts.commaRoundTrip,\n delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n encodeDotInKeys: typeof opts.encodeDotInKeys === 'boolean' ? opts.encodeDotInKeys : defaults.encodeDotInKeys,\n encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n filter: filter,\n format: format,\n formatter: formatter,\n serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n sort: typeof opts.sort === 'function' ? opts.sort : null,\n strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n };\n};\n\nmodule.exports = function (object, opts) {\n var obj = object;\n var options = normalizeStringifyOptions(opts);\n\n var objKeys;\n var filter;\n\n if (typeof options.filter === 'function') {\n filter = options.filter;\n obj = filter('', obj);\n } else if (isArray(options.filter)) {\n filter = options.filter;\n objKeys = filter;\n }\n\n var keys = [];\n\n if (typeof obj !== 'object' || obj === null) {\n return '';\n }\n\n var generateArrayPrefix = arrayPrefixGenerators[options.arrayFormat];\n var commaRoundTrip = generateArrayPrefix === 'comma' && options.commaRoundTrip;\n\n if (!objKeys) {\n objKeys = Object.keys(obj);\n }\n\n if (options.sort) {\n objKeys.sort(options.sort);\n }\n\n var sideChannel = getSideChannel();\n for (var i = 0; i < objKeys.length; ++i) {\n var key = objKeys[i];\n\n if (options.skipNulls && obj[key] === null) {\n continue;\n }\n pushToArray(keys, stringify(\n obj[key],\n key,\n generateArrayPrefix,\n commaRoundTrip,\n options.allowEmptyArrays,\n options.strictNullHandling,\n options.skipNulls,\n options.encodeDotInKeys,\n options.encode ? options.encoder : null,\n options.filter,\n options.sort,\n options.allowDots,\n options.serializeDate,\n options.format,\n options.formatter,\n options.encodeValuesOnly,\n options.charset,\n sideChannel\n ));\n }\n\n var joined = keys.join(options.delimiter);\n var prefix = options.addQueryPrefix === true ? '?' : '';\n\n if (options.charsetSentinel) {\n if (options.charset === 'iso-8859-1') {\n // encodeURIComponent('✓'), the \"numeric entity\" representation of a checkmark\n prefix += 'utf8=%26%2310003%3B&';\n } else {\n // encodeURIComponent('✓')\n prefix += 'utf8=%E2%9C%93&';\n }\n }\n\n return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n var array = [];\n for (var i = 0; i < 256; ++i) {\n array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n }\n\n return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n while (queue.length > 1) {\n var item = queue.pop();\n var obj = item.obj[item.prop];\n\n if (isArray(obj)) {\n var compacted = [];\n\n for (var j = 0; j < obj.length; ++j) {\n if (typeof obj[j] !== 'undefined') {\n compacted.push(obj[j]);\n }\n }\n\n item.obj[item.prop] = compacted;\n }\n }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n var obj = options && options.plainObjects ? Object.create(null) : {};\n for (var i = 0; i < source.length; ++i) {\n if (typeof source[i] !== 'undefined') {\n obj[i] = source[i];\n }\n }\n\n return obj;\n};\n\nvar merge = function merge(target, source, options) {\n /* eslint no-param-reassign: 0 */\n if (!source) {\n return target;\n }\n\n if (typeof source !== 'object') {\n if (isArray(target)) {\n target.push(source);\n } else if (target && typeof target === 'object') {\n if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n target[source] = true;\n }\n } else {\n return [target, source];\n }\n\n return target;\n }\n\n if (!target || typeof target !== 'object') {\n return [target].concat(source);\n }\n\n var mergeTarget = target;\n if (isArray(target) && !isArray(source)) {\n mergeTarget = arrayToObject(target, options);\n }\n\n if (isArray(target) && isArray(source)) {\n source.forEach(function (item, i) {\n if (has.call(target, i)) {\n var targetItem = target[i];\n if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n target[i] = merge(targetItem, item, options);\n } else {\n target.push(item);\n }\n } else {\n target[i] = item;\n }\n });\n return target;\n }\n\n return Object.keys(source).reduce(function (acc, key) {\n var value = source[key];\n\n if (has.call(acc, key)) {\n acc[key] = merge(acc[key], value, options);\n } else {\n acc[key] = value;\n }\n return acc;\n }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n return Object.keys(source).reduce(function (acc, key) {\n acc[key] = source[key];\n return acc;\n }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n var strWithoutPlus = str.replace(/\\+/g, ' ');\n if (charset === 'iso-8859-1') {\n // unescape never throws, no try...catch needed:\n return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n }\n // utf-8\n try {\n return decodeURIComponent(strWithoutPlus);\n } catch (e) {\n return strWithoutPlus;\n }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n // It has been adapted here for stricter adherence to RFC 3986\n if (str.length === 0) {\n return str;\n }\n\n var string = str;\n if (typeof str === 'symbol') {\n string = Symbol.prototype.toString.call(str);\n } else if (typeof str !== 'string') {\n string = String(str);\n }\n\n if (charset === 'iso-8859-1') {\n return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n });\n }\n\n var out = '';\n for (var i = 0; i < string.length; ++i) {\n var c = string.charCodeAt(i);\n\n if (\n c === 0x2D // -\n || c === 0x2E // .\n || c === 0x5F // _\n || c === 0x7E // ~\n || (c >= 0x30 && c <= 0x39) // 0-9\n || (c >= 0x41 && c <= 0x5A) // a-z\n || (c >= 0x61 && c <= 0x7A) // A-Z\n || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n ) {\n out += string.charAt(i);\n continue;\n }\n\n if (c < 0x80) {\n out = out + hexTable[c];\n continue;\n }\n\n if (c < 0x800) {\n out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n if (c < 0xD800 || c >= 0xE000) {\n out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n continue;\n }\n\n i += 1;\n c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n /* eslint operator-linebreak: [2, \"before\"] */\n out += hexTable[0xF0 | (c >> 18)]\n + hexTable[0x80 | ((c >> 12) & 0x3F)]\n + hexTable[0x80 | ((c >> 6) & 0x3F)]\n + hexTable[0x80 | (c & 0x3F)];\n }\n\n return out;\n};\n\nvar compact = function compact(value) {\n var queue = [{ obj: { o: value }, prop: 'o' }];\n var refs = [];\n\n for (var i = 0; i < queue.length; ++i) {\n var item = queue[i];\n var obj = item.obj[item.prop];\n\n var keys = Object.keys(obj);\n for (var j = 0; j < keys.length; ++j) {\n var key = keys[j];\n var val = obj[key];\n if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n queue.push({ obj: obj, prop: key });\n refs.push(val);\n }\n }\n }\n\n compactQueue(queue);\n\n return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n if (!obj || typeof obj !== 'object') {\n return false;\n }\n\n return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n if (isArray(val)) {\n var mapped = [];\n for (var i = 0; i < val.length; i += 1) {\n mapped.push(fn(val[i]));\n }\n return mapped;\n }\n return fn(val);\n};\n\nmodule.exports = {\n arrayToObject: arrayToObject,\n assign: assign,\n combine: combine,\n compact: compact,\n decode: decode,\n encode: encode,\n isBuffer: isBuffer,\n isRegExp: isRegExp,\n maybeMap: maybeMap,\n merge: merge\n};\n","/*\n * Copyright Joyent, Inc. and other Node contributors.\n *\n * Permission is hereby granted, free of charge, to any person obtaining a\n * copy of this software and associated documentation files (the\n * \"Software\"), to deal in the Software without restriction, including\n * without limitation the rights to use, copy, modify, merge, publish,\n * distribute, sublicense, and/or sell copies of the Software, and to permit\n * persons to whom the Software is furnished to do so, subject to the\n * following conditions:\n *\n * The above copyright notice and this permission notice shall be included\n * in all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n * NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n * USE OR OTHER DEALINGS IN THE SOFTWARE.\n */\n\n'use strict';\n\nvar punycode = require('punycode');\n\nfunction Url() {\n this.protocol = null;\n this.slashes = null;\n this.auth = null;\n this.host = null;\n this.port = null;\n this.hostname = null;\n this.hash = null;\n this.search = null;\n this.query = null;\n this.pathname = null;\n this.path = null;\n this.href = null;\n}\n\n// Reference: RFC 3986, RFC 1808, RFC 2396\n\n/*\n * define these here so at least they only have to be\n * compiled once on the first module load.\n */\nvar protocolPattern = /^([a-z0-9.+-]+:)/i,\n portPattern = /:[0-9]*$/,\n\n // Special case for a simple path URL\n simplePathPattern = /^(\\/\\/?(?!\\/)[^?\\s]*)(\\?[^\\s]*)?$/,\n\n /*\n * RFC 2396: characters reserved for delimiting URLs.\n * We actually just auto-escape these.\n */\n delims = [\n '<', '>', '\"', '`', ' ', '\\r', '\\n', '\\t'\n ],\n\n // RFC 2396: characters not allowed for various reasons.\n unwise = [\n '{', '}', '|', '\\\\', '^', '`'\n ].concat(delims),\n\n // Allowed by RFCs, but cause of XSS attacks. Always escape these.\n autoEscape = ['\\''].concat(unwise),\n /*\n * Characters that are never ever allowed in a hostname.\n * Note that any invalid chars are also handled, but these\n * are the ones that are *expected* to be seen, so we fast-path\n * them.\n */\n nonHostChars = [\n '%', '/', '?', ';', '#'\n ].concat(autoEscape),\n hostEndingChars = [\n '/', '?', '#'\n ],\n hostnameMaxLen = 255,\n hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,\n hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,\n // protocols that can allow \"unsafe\" and \"unwise\" chars.\n unsafeProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that never have a hostname.\n hostlessProtocol = {\n javascript: true,\n 'javascript:': true\n },\n // protocols that always contain a // bit.\n slashedProtocol = {\n http: true,\n https: true,\n ftp: true,\n gopher: true,\n file: true,\n 'http:': true,\n 'https:': true,\n 'ftp:': true,\n 'gopher:': true,\n 'file:': true\n },\n querystring = require('qs');\n\nfunction urlParse(url, parseQueryString, slashesDenoteHost) {\n if (url && typeof url === 'object' && url instanceof Url) { return url; }\n\n var u = new Url();\n u.parse(url, parseQueryString, slashesDenoteHost);\n return u;\n}\n\nUrl.prototype.parse = function (url, parseQueryString, slashesDenoteHost) {\n if (typeof url !== 'string') {\n throw new TypeError(\"Parameter 'url' must be a string, not \" + typeof url);\n }\n\n /*\n * Copy chrome, IE, opera backslash-handling behavior.\n * Back slashes before the query string get converted to forward slashes\n * See: https://code.google.com/p/chromium/issues/detail?id=25916\n */\n var queryIndex = url.indexOf('?'),\n splitter = queryIndex !== -1 && queryIndex < url.indexOf('#') ? '?' : '#',\n uSplit = url.split(splitter),\n slashRegex = /\\\\/g;\n uSplit[0] = uSplit[0].replace(slashRegex, '/');\n url = uSplit.join(splitter);\n\n var rest = url;\n\n /*\n * trim before proceeding.\n * This is to support parse stuff like \" http://foo.com \\n\"\n */\n rest = rest.trim();\n\n if (!slashesDenoteHost && url.split('#').length === 1) {\n // Try fast path regexp\n var simplePath = simplePathPattern.exec(rest);\n if (simplePath) {\n this.path = rest;\n this.href = rest;\n this.pathname = simplePath[1];\n if (simplePath[2]) {\n this.search = simplePath[2];\n if (parseQueryString) {\n this.query = querystring.parse(this.search.substr(1));\n } else {\n this.query = this.search.substr(1);\n }\n } else if (parseQueryString) {\n this.search = '';\n this.query = {};\n }\n return this;\n }\n }\n\n var proto = protocolPattern.exec(rest);\n if (proto) {\n proto = proto[0];\n var lowerProto = proto.toLowerCase();\n this.protocol = lowerProto;\n rest = rest.substr(proto.length);\n }\n\n /*\n * figure out if it's got a host\n * user@server is *always* interpreted as a hostname, and url\n * resolution will treat //foo/bar as host=foo,path=bar because that's\n * how the browser resolves relative URLs.\n */\n if (slashesDenoteHost || proto || rest.match(/^\\/\\/[^@/]+@[^@/]+/)) {\n var slashes = rest.substr(0, 2) === '//';\n if (slashes && !(proto && hostlessProtocol[proto])) {\n rest = rest.substr(2);\n this.slashes = true;\n }\n }\n\n if (!hostlessProtocol[proto] && (slashes || (proto && !slashedProtocol[proto]))) {\n\n /*\n * there's a hostname.\n * the first instance of /, ?, ;, or # ends the host.\n *\n * If there is an @ in the hostname, then non-host chars *are* allowed\n * to the left of the last @ sign, unless some host-ending character\n * comes *before* the @-sign.\n * URLs are obnoxious.\n *\n * ex:\n * http://a@b@c/ => user:a@b host:c\n * http://a@b?@c => user:a host:c path:/?@c\n */\n\n /*\n * v0.12 TODO(isaacs): This is not quite how Chrome does things.\n * Review our test case against browsers more comprehensively.\n */\n\n // find the first instance of any hostEndingChars\n var hostEnd = -1;\n for (var i = 0; i < hostEndingChars.length; i++) {\n var hec = rest.indexOf(hostEndingChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n\n /*\n * at this point, either we have an explicit point where the\n * auth portion cannot go past, or the last @ char is the decider.\n */\n var auth, atSign;\n if (hostEnd === -1) {\n // atSign can be anywhere.\n atSign = rest.lastIndexOf('@');\n } else {\n /*\n * atSign must be in auth portion.\n * http://a@b/c@d => host:b auth:a path:/c@d\n */\n atSign = rest.lastIndexOf('@', hostEnd);\n }\n\n /*\n * Now we have a portion which is definitely the auth.\n * Pull that off.\n */\n if (atSign !== -1) {\n auth = rest.slice(0, atSign);\n rest = rest.slice(atSign + 1);\n this.auth = decodeURIComponent(auth);\n }\n\n // the host is the remaining to the left of the first non-host char\n hostEnd = -1;\n for (var i = 0; i < nonHostChars.length; i++) {\n var hec = rest.indexOf(nonHostChars[i]);\n if (hec !== -1 && (hostEnd === -1 || hec < hostEnd)) { hostEnd = hec; }\n }\n // if we still have not hit it, then the entire thing is a host.\n if (hostEnd === -1) { hostEnd = rest.length; }\n\n this.host = rest.slice(0, hostEnd);\n rest = rest.slice(hostEnd);\n\n // pull out port.\n this.parseHost();\n\n /*\n * we've indicated that there is a hostname,\n * so even if it's empty, it has to be present.\n */\n this.hostname = this.hostname || '';\n\n /*\n * if hostname begins with [ and ends with ]\n * assume that it's an IPv6 address.\n */\n var ipv6Hostname = this.hostname[0] === '[' && this.hostname[this.hostname.length - 1] === ']';\n\n // validate a little.\n if (!ipv6Hostname) {\n var hostparts = this.hostname.split(/\\./);\n for (var i = 0, l = hostparts.length; i < l; i++) {\n var part = hostparts[i];\n if (!part) { continue; }\n if (!part.match(hostnamePartPattern)) {\n var newpart = '';\n for (var j = 0, k = part.length; j < k; j++) {\n if (part.charCodeAt(j) > 127) {\n /*\n * we replace non-ASCII char with a temporary placeholder\n * we need this to make sure size of hostname is not\n * broken by replacing non-ASCII by nothing\n */\n newpart += 'x';\n } else {\n newpart += part[j];\n }\n }\n // we test again with ASCII char only\n if (!newpart.match(hostnamePartPattern)) {\n var validParts = hostparts.slice(0, i);\n var notHost = hostparts.slice(i + 1);\n var bit = part.match(hostnamePartStart);\n if (bit) {\n validParts.push(bit[1]);\n notHost.unshift(bit[2]);\n }\n if (notHost.length) {\n rest = '/' + notHost.join('.') + rest;\n }\n this.hostname = validParts.join('.');\n break;\n }\n }\n }\n }\n\n if (this.hostname.length > hostnameMaxLen) {\n this.hostname = '';\n } else {\n // hostnames are always lower case.\n this.hostname = this.hostname.toLowerCase();\n }\n\n if (!ipv6Hostname) {\n /*\n * IDNA Support: Returns a punycoded representation of \"domain\".\n * It only converts parts of the domain name that\n * have non-ASCII characters, i.e. it doesn't matter if\n * you call it with a domain that already is ASCII-only.\n */\n this.hostname = punycode.toASCII(this.hostname);\n }\n\n var p = this.port ? ':' + this.port : '';\n var h = this.hostname || '';\n this.host = h + p;\n this.href += this.host;\n\n /*\n * strip [ and ] from the hostname\n * the host field still retains them, though\n */\n if (ipv6Hostname) {\n this.hostname = this.hostname.substr(1, this.hostname.length - 2);\n if (rest[0] !== '/') {\n rest = '/' + rest;\n }\n }\n }\n\n /*\n * now rest is set to the post-host stuff.\n * chop off any delim chars.\n */\n if (!unsafeProtocol[lowerProto]) {\n\n /*\n * First, make 100% sure that any \"autoEscape\" chars get\n * escaped, even if encodeURIComponent doesn't think they\n * need to be.\n */\n for (var i = 0, l = autoEscape.length; i < l; i++) {\n var ae = autoEscape[i];\n if (rest.indexOf(ae) === -1) { continue; }\n var esc = encodeURIComponent(ae);\n if (esc === ae) {\n esc = escape(ae);\n }\n rest = rest.split(ae).join(esc);\n }\n }\n\n // chop off from the tail first.\n var hash = rest.indexOf('#');\n if (hash !== -1) {\n // got a fragment string.\n this.hash = rest.substr(hash);\n rest = rest.slice(0, hash);\n }\n var qm = rest.indexOf('?');\n if (qm !== -1) {\n this.search = rest.substr(qm);\n this.query = rest.substr(qm + 1);\n if (parseQueryString) {\n this.query = querystring.parse(this.query);\n }\n rest = rest.slice(0, qm);\n } else if (parseQueryString) {\n // no query string, but parseQueryString still requested\n this.search = '';\n this.query = {};\n }\n if (rest) { this.pathname = rest; }\n if (slashedProtocol[lowerProto] && this.hostname && !this.pathname) {\n this.pathname = '/';\n }\n\n // to support http.request\n if (this.pathname || this.search) {\n var p = this.pathname || '';\n var s = this.search || '';\n this.path = p + s;\n }\n\n // finally, reconstruct the href based on what has been validated.\n this.href = this.format();\n return this;\n};\n\n// format a parsed object into a url string\nfunction urlFormat(obj) {\n /*\n * ensure it's an object, and not a string url.\n * If it's an obj, this is a no-op.\n * this way, you can call url_format() on strings\n * to clean up potentially wonky urls.\n */\n if (typeof obj === 'string') { obj = urlParse(obj); }\n if (!(obj instanceof Url)) { return Url.prototype.format.call(obj); }\n return obj.format();\n}\n\nUrl.prototype.format = function () {\n var auth = this.auth || '';\n if (auth) {\n auth = encodeURIComponent(auth);\n auth = auth.replace(/%3A/i, ':');\n auth += '@';\n }\n\n var protocol = this.protocol || '',\n pathname = this.pathname || '',\n hash = this.hash || '',\n host = false,\n query = '';\n\n if (this.host) {\n host = auth + this.host;\n } else if (this.hostname) {\n host = auth + (this.hostname.indexOf(':') === -1 ? this.hostname : '[' + this.hostname + ']');\n if (this.port) {\n host += ':' + this.port;\n }\n }\n\n if (this.query && typeof this.query === 'object' && Object.keys(this.query).length) {\n query = querystring.stringify(this.query, {\n arrayFormat: 'repeat',\n addQueryPrefix: false\n });\n }\n\n var search = this.search || (query && ('?' + query)) || '';\n\n if (protocol && protocol.substr(-1) !== ':') { protocol += ':'; }\n\n /*\n * only the slashedProtocols get the //. Not mailto:, xmpp:, etc.\n * unless they had them to begin with.\n */\n if (this.slashes || (!protocol || slashedProtocol[protocol]) && host !== false) {\n host = '//' + (host || '');\n if (pathname && pathname.charAt(0) !== '/') { pathname = '/' + pathname; }\n } else if (!host) {\n host = '';\n }\n\n if (hash && hash.charAt(0) !== '#') { hash = '#' + hash; }\n if (search && search.charAt(0) !== '?') { search = '?' + search; }\n\n pathname = pathname.replace(/[?#]/g, function (match) {\n return encodeURIComponent(match);\n });\n search = search.replace('#', '%23');\n\n return protocol + host + pathname + search + hash;\n};\n\nfunction urlResolve(source, relative) {\n return urlParse(source, false, true).resolve(relative);\n}\n\nUrl.prototype.resolve = function (relative) {\n return this.resolveObject(urlParse(relative, false, true)).format();\n};\n\nfunction urlResolveObject(source, relative) {\n if (!source) { return relative; }\n return urlParse(source, false, true).resolveObject(relative);\n}\n\nUrl.prototype.resolveObject = function (relative) {\n if (typeof relative === 'string') {\n var rel = new Url();\n rel.parse(relative, false, true);\n relative = rel;\n }\n\n var result = new Url();\n var tkeys = Object.keys(this);\n for (var tk = 0; tk < tkeys.length; tk++) {\n var tkey = tkeys[tk];\n result[tkey] = this[tkey];\n }\n\n /*\n * hash is always overridden, no matter what.\n * even href=\"\" will remove it.\n */\n result.hash = relative.hash;\n\n // if the relative url is empty, then there's nothing left to do here.\n if (relative.href === '') {\n result.href = result.format();\n return result;\n }\n\n // hrefs like //foo/bar always cut to the protocol.\n if (relative.slashes && !relative.protocol) {\n // take everything except the protocol from relative\n var rkeys = Object.keys(relative);\n for (var rk = 0; rk < rkeys.length; rk++) {\n var rkey = rkeys[rk];\n if (rkey !== 'protocol') { result[rkey] = relative[rkey]; }\n }\n\n // urlParse appends trailing / to urls like http://www.example.com\n if (slashedProtocol[result.protocol] && result.hostname && !result.pathname) {\n result.pathname = '/';\n result.path = result.pathname;\n }\n\n result.href = result.format();\n return result;\n }\n\n if (relative.protocol && relative.protocol !== result.protocol) {\n /*\n * if it's a known url protocol, then changing\n * the protocol does weird things\n * first, if it's not file:, then we MUST have a host,\n * and if there was a path\n * to begin with, then we MUST have a path.\n * if it is file:, then the host is dropped,\n * because that's known to be hostless.\n * anything else is assumed to be absolute.\n */\n if (!slashedProtocol[relative.protocol]) {\n var keys = Object.keys(relative);\n for (var v = 0; v < keys.length; v++) {\n var k = keys[v];\n result[k] = relative[k];\n }\n result.href = result.format();\n return result;\n }\n\n result.protocol = relative.protocol;\n if (!relative.host && !hostlessProtocol[relative.protocol]) {\n var relPath = (relative.pathname || '').split('/');\n while (relPath.length && !(relative.host = relPath.shift())) { }\n if (!relative.host) { relative.host = ''; }\n if (!relative.hostname) { relative.hostname = ''; }\n if (relPath[0] !== '') { relPath.unshift(''); }\n if (relPath.length < 2) { relPath.unshift(''); }\n result.pathname = relPath.join('/');\n } else {\n result.pathname = relative.pathname;\n }\n result.search = relative.search;\n result.query = relative.query;\n result.host = relative.host || '';\n result.auth = relative.auth;\n result.hostname = relative.hostname || relative.host;\n result.port = relative.port;\n // to support http.request\n if (result.pathname || result.search) {\n var p = result.pathname || '';\n var s = result.search || '';\n result.path = p + s;\n }\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n }\n\n var isSourceAbs = result.pathname && result.pathname.charAt(0) === '/',\n isRelAbs = relative.host || relative.pathname && relative.pathname.charAt(0) === '/',\n mustEndAbs = isRelAbs || isSourceAbs || (result.host && relative.pathname),\n removeAllDots = mustEndAbs,\n srcPath = result.pathname && result.pathname.split('/') || [],\n relPath = relative.pathname && relative.pathname.split('/') || [],\n psychotic = result.protocol && !slashedProtocol[result.protocol];\n\n /*\n * if the url is a non-slashed url, then relative\n * links like ../.. should be able\n * to crawl up to the hostname, as well. This is strange.\n * result.protocol has already been set by now.\n * Later on, put the first path part into the host field.\n */\n if (psychotic) {\n result.hostname = '';\n result.port = null;\n if (result.host) {\n if (srcPath[0] === '') { srcPath[0] = result.host; } else { srcPath.unshift(result.host); }\n }\n result.host = '';\n if (relative.protocol) {\n relative.hostname = null;\n relative.port = null;\n if (relative.host) {\n if (relPath[0] === '') { relPath[0] = relative.host; } else { relPath.unshift(relative.host); }\n }\n relative.host = null;\n }\n mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');\n }\n\n if (isRelAbs) {\n // it's absolute.\n result.host = relative.host || relative.host === '' ? relative.host : result.host;\n result.hostname = relative.hostname || relative.hostname === '' ? relative.hostname : result.hostname;\n result.search = relative.search;\n result.query = relative.query;\n srcPath = relPath;\n // fall through to the dot-handling below.\n } else if (relPath.length) {\n /*\n * it's relative\n * throw away the existing file, and take the new path instead.\n */\n if (!srcPath) { srcPath = []; }\n srcPath.pop();\n srcPath = srcPath.concat(relPath);\n result.search = relative.search;\n result.query = relative.query;\n } else if (relative.search != null) {\n /*\n * just pull out the search.\n * like href='?foo'.\n * Put this after the other two cases because it simplifies the booleans\n */\n if (psychotic) {\n result.host = srcPath.shift();\n result.hostname = result.host;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n result.search = relative.search;\n result.query = relative.query;\n // to support http.request\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.href = result.format();\n return result;\n }\n\n if (!srcPath.length) {\n /*\n * no path at all. easy.\n * we've already handled the other stuff above.\n */\n result.pathname = null;\n // to support http.request\n if (result.search) {\n result.path = '/' + result.search;\n } else {\n result.path = null;\n }\n result.href = result.format();\n return result;\n }\n\n /*\n * if a url ENDs in . or .., then it must get a trailing slash.\n * however, if it ends in anything else non-slashy,\n * then it must NOT get a trailing slash.\n */\n var last = srcPath.slice(-1)[0];\n var hasTrailingSlash = (result.host || relative.host || srcPath.length > 1) && (last === '.' || last === '..') || last === '';\n\n /*\n * strip single dots, resolve double dots to parent dir\n * if the path tries to go above the root, `up` ends up > 0\n */\n var up = 0;\n for (var i = srcPath.length; i >= 0; i--) {\n last = srcPath[i];\n if (last === '.') {\n srcPath.splice(i, 1);\n } else if (last === '..') {\n srcPath.splice(i, 1);\n up++;\n } else if (up) {\n srcPath.splice(i, 1);\n up--;\n }\n }\n\n // if the path is allowed to go above the root, restore leading ..s\n if (!mustEndAbs && !removeAllDots) {\n for (; up--; up) {\n srcPath.unshift('..');\n }\n }\n\n if (mustEndAbs && srcPath[0] !== '' && (!srcPath[0] || srcPath[0].charAt(0) !== '/')) {\n srcPath.unshift('');\n }\n\n if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {\n srcPath.push('');\n }\n\n var isAbsolute = srcPath[0] === '' || (srcPath[0] && srcPath[0].charAt(0) === '/');\n\n // put the host back\n if (psychotic) {\n result.hostname = isAbsolute ? '' : srcPath.length ? srcPath.shift() : '';\n result.host = result.hostname;\n /*\n * occationaly the auth can get stuck only in host\n * this especially happens in cases like\n * url.resolveObject('mailto:local1@domain1', 'local2@domain2')\n */\n var authInHost = result.host && result.host.indexOf('@') > 0 ? result.host.split('@') : false;\n if (authInHost) {\n result.auth = authInHost.shift();\n result.hostname = authInHost.shift();\n result.host = result.hostname;\n }\n }\n\n mustEndAbs = mustEndAbs || (result.host && srcPath.length);\n\n if (mustEndAbs && !isAbsolute) {\n srcPath.unshift('');\n }\n\n if (srcPath.length > 0) {\n result.pathname = srcPath.join('/');\n } else {\n result.pathname = null;\n result.path = null;\n }\n\n // to support request.http\n if (result.pathname !== null || result.search !== null) {\n result.path = (result.pathname ? result.pathname : '') + (result.search ? result.search : '');\n }\n result.auth = relative.auth || result.auth;\n result.slashes = result.slashes || relative.slashes;\n result.href = result.format();\n return result;\n};\n\nUrl.prototype.parseHost = function () {\n var host = this.host;\n var port = portPattern.exec(host);\n if (port) {\n port = port[0];\n if (port !== ':') {\n this.port = port.substr(1);\n }\n host = host.substr(0, host.length - port.length);\n }\n if (host) { this.hostname = host; }\n};\n\nexports.parse = urlParse;\nexports.resolve = urlResolve;\nexports.resolveObject = urlResolveObject;\nexports.format = urlFormat;\n\nexports.Url = Url;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"4065\":\"f1139ec30708e44e1094\",\"4254\":\"96661b9f421b07ce7189\"}[chunkId] + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6673;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript)\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t6673: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(65497)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","name","emits","props","title","type","String","fillColor","default","size","Number","_vm","this","_c","_self","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","backgroundImage","loadState","shippedBackgroundList","themingDefaultBackground","defaultShippedBackground","prefixWithBaseUrl","url","generateFilePath","components","Check","Close","ImageEdit","NcButton","NcColorPicker","data","loading","Theming","computed","shippedBackgrounds","Object","keys","map","fileName","preview","details","filter","background","isGlobalBackgroundDeleted","isGlobalBackgroundDefault","isBackgroundDisabled","methods","invertTextColor","color","calculateLuma","red","green","blue","hexToRGB","hex","result","exec","parseInt","update","backgroundColor","setDefault","axios","post","generateUrl","setShipped","shipped","value","setFile","path","arguments","length","undefined","removeBackground","delete","pickColor","event","_event$target","_this$Theming","target","dataset","debouncePickColor","debounce","pickFile","getFilePickerBuilder","t","allowDirectories","setMimeTypeFilter","setMultiSelect","addButton","id","label","callback","nodes","_nodes$","applyFile","build","pick","trim","console","error","showError","response","_palette$DarkVibrant","fileUrl","generateRemoteUrl","getCurrentUser","uid","get","responseType","blobUrl","URL","createObjectURL","palette","getColorPaletteFromBlob","DarkVibrant","debug","Promise","resolve","reject","Vibrant","getPalette","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","class","style","defaultColor","model","$$v","$set","expression","_l","shippedBackground","key","primary_color","attribution","description","theming","NcCheckboxRadioSwitch","enforced","Boolean","selected","theme","required","unique","switchType","img","checked","set","enabled","onToggle","directives","rawName","enableLabel","_typeof","obj","Symbol","iterator","constructor","prototype","_defineProperty","defineProperty","enumerable","configurable","writable","_extends","assign","i","source","hasOwnProperty","call","apply","_objectSpread","ownKeys","getOwnPropertySymbols","concat","sym","getOwnPropertyDescriptor","forEach","userAgent","pattern","window","navigator","match","IE11OrLess","Edge","FireFox","Safari","IOS","ChromeForAndroid","captureMode","capture","passive","el","fn","addEventListener","off","removeEventListener","matches","selector","substring","msMatchesSelector","webkitMatchesSelector","_","getParentOrHost","host","document","nodeType","parentNode","closest","ctx","includeCTX","_throttleTimeout","R_SPACE","toggleClass","state","classList","className","replace","css","prop","val","defaultView","getComputedStyle","currentStyle","indexOf","matrix","selfOnly","appliedTransforms","transform","matrixFn","DOMMatrix","WebKitCSSMatrix","CSSMatrix","MSCSSMatrix","find","tagName","list","getElementsByTagName","n","getWindowScrollingElement","scrollingElement","documentElement","getRect","relativeToContainingBlock","relativeToNonStaticParent","undoScale","container","getBoundingClientRect","elRect","top","left","bottom","right","height","width","innerHeight","innerWidth","containerRect","elMatrix","scaleX","a","scaleY","d","isScrolledPast","elSide","parentSide","parent","getParentAutoScrollElement","elSideVal","parentSideVal","getChild","childNum","currentChild","children","display","Sortable","ghost","dragged","draggable","lastChild","last","lastElementChild","previousElementSibling","index","nodeName","toUpperCase","clone","getRelativeScrollOffset","offsetLeft","offsetTop","winScroller","scrollLeft","scrollTop","includeSelf","elem","gotSelf","clientWidth","scrollWidth","clientHeight","scrollHeight","elemCSS","overflowX","overflowY","body","isRectEqual","rect1","rect2","Math","round","throttle","ms","args","setTimeout","scrollBy","x","y","Polymer","$","jQuery","Zepto","dom","cloneNode","expando","Date","getTime","plugins","defaults","initializeByDefault","PluginManager","mount","plugin","option","push","pluginEvent","eventName","sortable","evt","_this","eventCanceled","cancel","eventNameGlobal","pluginName","initializePlugins","initialized","modified","modifyOption","getEventProperties","eventProperties","modifiedValue","optionListeners","_ref","originalEvent","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","_objectWithoutProperties","bind","dragEl","parentEl","ghostEl","rootEl","nextEl","lastDownEl","cloneEl","cloneHidden","dragStarted","moved","putSortable","activeSortable","active","oldIndex","oldDraggableIndex","newIndex","newDraggableIndex","hideGhostForTarget","_hideGhostForTarget","unhideGhostForTarget","_unhideGhostForTarget","cloneNowHidden","cloneNowShown","dispatchSortableEvent","_dispatchEvent","info","targetEl","toEl","fromEl","extraEventProperties","onName","charAt","substr","CustomEvent","createEvent","initEvent","bubbles","cancelable","to","from","item","pullMode","lastPutMode","allEventProperties","dispatchEvent","activeGroup","tapEvt","touchEvt","lastDx","lastDy","tapDistanceLeft","tapDistanceTop","lastTarget","lastDirection","targetMoveDistance","ghostRelativeParent","awaitingDragStarted","ignoreNextClick","sortables","pastFirstInvertThresh","isCircumstantialInvert","ghostRelativeParentInitialScroll","_silent","savedInputChecked","documentExists","PositionGhostAbsolutely","CSSFloatProperty","supportDraggable","createElement","supportCssPointerEvents","cssText","pointerEvents","_detectDirection","elCSS","elWidth","paddingLeft","paddingRight","borderLeftWidth","borderRightWidth","child1","child2","firstChildCSS","secondChildCSS","firstChildWidth","marginLeft","marginRight","secondChildWidth","flexDirection","gridTemplateColumns","split","touchingSideChild2","clear","_prepareGroup","toFn","pull","sameGroup","group","otherGroup","join","originalGroup","checkPull","checkPut","put","revertClone","preventDefault","stopPropagation","stopImmediatePropagation","nearestEmptyInsertDetectEvent","touches","nearest","clientX","clientY","some","rect","threshold","emptyInsertThreshold","insideHorizontally","insideVertically","ret","_onDragOver","_checkOutsideTargetEl","_isOutsideThisEl","toString","animationCallbackId","animationStates","sort","disabled","store","handle","test","swapThreshold","invertSwap","invertedSwapThreshold","removeCloneOnHide","direction","ghostClass","chosenClass","dragClass","ignore","preventOnFilter","animation","easing","setData","dataTransfer","textContent","dropBubble","dragoverBubble","dataIdAttr","delay","delayOnTouchOnly","touchStartThreshold","devicePixelRatio","forceFallback","fallbackClass","fallbackOnBody","fallbackTolerance","fallbackOffset","supportPointer","nativeDraggable","_onTapStart","captureAnimationState","slice","child","fromRect","thisAnimationDuration","childMatrix","f","e","addAnimationState","removeAnimationState","splice","arr","indexOfObject","animateAll","clearTimeout","animating","animationTime","time","toRect","prevFromRect","prevToRect","animatingRect","targetMatrix","sqrt","pow","calculateRealTime","animate","max","animationResetTimer","currentRect","duration","translateX","translateY","animatingX","animatingY","offsetWidth","repaint","animated","_onMove","dragRect","targetRect","willInsertAfter","retVal","onMoveFn","onMove","draggedRect","related","relatedRect","_disableDraggable","_unsilent","_generateId","str","src","href","sum","charCodeAt","_nextTick","_cancelNextTick","contains","_getDirection","touch","pointerType","originalTarget","shadowRoot","composedPath","root","inputs","idx","_saveInputCheckedState","button","isContentEditable","criteria","_prepareDragStart","dragStartFn","ownerDocument","nextSibling","_lastX","_lastY","_onDrop","_disableDelayedDragEvents","_triggerDragStart","_disableDelayedDrag","_delayedDragTouchMoveHandler","_dragStartTimer","abs","floor","_onTouchMove","_onDragStart","selection","empty","getSelection","removeAllRanges","err","_dragStarted","fallback","_appendGhost","_nulling","_emulateDragOver","elementFromPoint","ghostMatrix","relativeScrollOffset","dx","dy","b","c","cssMatrix","appendChild","_hideClone","cloneId","insertBefore","_loopId","setInterval","effectAllowed","_dragStartId","revert","vertical","isOwner","canSort","fromSortable","completedFired","dragOverEvent","_ignoreWhileAnimating","completed","elLastChild","_ghostIsLast","changed","targetBeforeFirstSwap","sibling","differentLevel","differentRowCol","dragElS1Opp","dragElS2Opp","dragElOppLength","targetS1Opp","targetS2Opp","targetOppLength","_dragElInRowColumn","side1","scrolledPastTop","scrollBefore","isLastTarget","mouseOnAxis","targetLength","targetS1","targetS2","invert","_getInsertDirection","_getSwapDirection","dragIndex","nextElementSibling","after","moveVector","extra","axis","insertion","_showClone","_offMoveEvents","_offUpEvents","clearInterval","removeChild","save","handleEvent","dropEffect","_globalDragOver","toArray","order","getAttribute","items","destroy","Array","querySelectorAll","removeAttribute","utils","is","extend","dst","nextTick","cancelNextTick","detectDirection","element","_len","_key","create","version","scrollEl","scrollRootEl","lastAutoScrollX","lastAutoScrollY","touchEvt$1","pointerElemChangedInterval","autoScrolls","scrolling","clearAutoScrolls","autoScroll","pid","clearPointerElemChangedInterval","isFallback","scroll","scrollCustomFn","sens","scrollSensitivity","speed","scrollSpeed","scrollThisInstance","scrollFn","layersOut","currentParent","canScrollX","canScrollY","scrollPosX","scrollPosY","vx","vy","layer","scrollOffsetY","scrollOffsetX","bubbleScroll","drop","toSortable","changedTouches","onSpill","Revert","Remove","startIndex","dragStart","_ref2","_ref3","_ref4","parentSortable","AutoScroll","_handleAutoScroll","_handleFallbackAutoScroll","dragOverCompleted","dragOverBubble","nulling","ogElemScroller","newElem","util","warn","defineComponent","IconArrowDown","IconArrowUp","ariaDescribedby","ariaDetails","app","isFirst","isLast","move:up","move:down","update:focus","setup","emit","buttonUp","ref","buttonDown","needsFocus","moveUp","moveDown","keepFocus","$el","focus","_vm$app$label","_setupProxy","icon","scopedSlots","_u","proxy","AppOrderSelectorElement","Fragment","isArray","listElement","appList","newValue","renderCount","resetOptions","defaultOptions","onUpdate","_valueIsRef","array","moveArrayElement","start","querySelector","stop","useSortable","selectorElements","onUpdated","statusInfo","before","_props$value","statusInfoId","random","updateStatusInfo","position","total","_g","refInFor","AppOrderSelector","IconUndo","NcNoteCard","NcSettingsSection","userAppOrder","enforcedDefaultApp","initialAppOrder","values","hasCustomAppOrder","hasAppOrderChanged","appOrder","elementIdAppOrderChanged","elementIdEnforcedDefaultApp","ariaDetailsAppOrder","saveSetting","generateOcsUrl","appId","configKey","configValue","JSON","stringify","updateAppOrder","then","catch","resetAppOrder","headers","ocs","availableThemes","enforceTheme","shortcutsDisabled","enableBlurFilter","isUserThemingDisabled","ItemPreview","BackgroundSettings","UserAppMenuSection","themes","fonts","selectedTheme","guidelinesLink","descriptionDetail","issuetrackerLink","designteamLink","watch","newState","changeShortcutsDisabled","refreshGlobalStyles","head","searchParams","now","newTheme","onload","remove","append","updateBackground","changeTheme","updateBodyAttributes","selectItem","changeFont","font","method","changeEnableBlurFilter","enabledThemesIDs","enabledFontsIDs","toggleAttribute","setAttribute","themeId","OC","Notification","showTemporary","meta","message","domProps","__webpack_nonce__","btoa","getRequestToken","Vue","App","$mount","$on","refreshStyles","___CSS_LOADER_EXPORT___","module","baseForOwn","baseEach","createBaseEach","exports","collection","predicate","baseFor","object","iteratee","isArrayLike","eachFunc","fromRight","iterable","baseRest","eq","isIterateeCall","keysIn","objectProto","sources","guard","propsIndex","propsLength","arrayFilter","baseFilter","baseIteratee","__importDefault","mod","__esModule","vibrant_1","browser_1","DefaultOpts","ImageClass","Builder","opts","_src","_opts","filters","maxColorCount","colorCount","maxDimension","addFilter","removeFilter","clearFilters","quality","q","useImageClass","imageClass","useGenerator","generator","useQuantizer","quantizer","cb","getSwatches","Swatch","util_1","rgb","population","_rgb","_population","applyFilter","colors","_a","r","g","_hsl","rgbToHsl","_hex","rgbToHex","toJSON","getRgb","getHsl","hsl","getPopulation","getHex","getYiq","_yiq","_titleTextColor","_bodyTextColor","getTitleTextColor","titleTextColor","getBodyTextColor","bodyTextColor","combineFilters","default_1","color_1","targetDarkLuma","maxDarkLuma","minLightLuma","targetLightLuma","minNormalLuma","targetNormalLuma","maxNormalLuma","targetMutesSaturation","maxMutesSaturation","targetVibrantSaturation","minVibrantSaturation","weightSaturation","weightLuma","weightPopulation","_findColorVariation","swatches","maxPopulation","targetLuma","minLuma","maxLuma","targetSaturation","minSaturation","maxSaturation","maxValue","swatch","s","l","LightVibrant","Muted","DarkMuted","LightMuted","_isAlreadySelected","saturation","luma","invertDiff","targetValue","_i","weightSum","weight","weightedMean","_createComparisonValue","p","_findMaxPopulation","_generateVariationColors","h","hslToRgb","_d","_f","_h","_j","_generateEmptySwatches","ImageBase","scaleDown","getWidth","getHeight","ratio","maxSide","resize","imageData","getImageData","pixels","offset","extendStatics","__extends","setPrototypeOf","__proto__","__","__createBinding","o","m","k","k2","__setModuleDefault","v","__importStar","base_1","Url","BrowserImage","_super","_initCanvas","image","canvas","_canvas","context","_context","getContext","_width","_height","drawImage","load","ua","ub","u","parse","protocol","port","location","hostname","crossOrigin","HTMLImageElement","Error","onImageLoad","complete","onerror","clearRect","putImageData","targetWidth","targetHeight","scale","getPixelCount","WebWorker","mmcq_1","vbox_1","pqueue_1","_splitBoxes","pq","lastSize","vbox","pop","count","vbox1","vbox2","hist","pq2","volume","contents","avg","generateSwatches","PQueue","comparator","_comparator","_sorted","_sort","peek","mapper","VBox","r1","r2","g1","g2","b1","b2","_volume","_count","dimension","shouldIgnore","rmax","rmin","gmax","gmin","bmax","bmin","hn","SIGBITS","Uint32Array","MAX_VALUE","RSHIFT","getColorIndex","invalidate","_avg","ntot","mult","rsum","gsum","bsum","rw","gw","bw","maxw","accSum","maxd","splitPoint","reverseSum","dim1","dim2","d1","d2","min","c2","doCut","hexToRgb","rgbToXyz","xyzToCIELab","z","rgbToCIELab","deltaE94","lab1","lab2","L1","a1","L2","a2","dL","da","db","xC1","xDL","xDC","xDE","xDH","rgbDiff","rgb1","rgb2","getColorDiffStatus","hexDiff","defer","DELTAE94_DIFF_STATUS","NA","PERFECT","CLOSE","GOOD","SIMILAR","promise","_resolve","_reject","hue2rgb","hex1","hex2","builder_1","Util","Quantizer","Generator","Filters","combinedFilter","_process","_palette","Filter","Default","MMCQ","hasMap","Map","mapSizeDescriptor","mapSize","mapForEach","hasSet","Set","setSizeDescriptor","setSize","setForEach","weakMapHas","WeakMap","has","weakSetHas","WeakSet","weakRefDeref","WeakRef","deref","booleanValueOf","valueOf","objectToString","functionToString","Function","$match","$slice","$replace","$toUpperCase","$toLowerCase","toLowerCase","$test","RegExp","$concat","$join","$arrSlice","$floor","bigIntValueOf","BigInt","gOPS","symToString","hasShammedSymbols","toStringTag","isEnumerable","gPO","Reflect","getPrototypeOf","O","addNumericSeparator","num","Infinity","sepRegex","int","intStr","dec","utilInspect","inspectCustom","custom","inspectSymbol","isSymbol","wrapQuotes","defaultStyle","quoteChar","quoteStyle","quote","toStr","isRegExp","inspect_","depth","seen","TypeError","maxStringLength","customInspect","indent","numericSeparator","inspectString","bigIntStr","maxDepth","baseIndent","base","prev","getIndent","inspect","noIndent","newOpts","nameOf","arrObjKeys","symString","markBoxed","HTMLElement","attributes","childNodes","xs","singleLineValues","indentedJoin","isError","parts","cause","isMap","mapParts","collectionOf","isSet","setParts","isWeakMap","weakCollectionOf","isWeakSet","isWeakRef","isNumber","isBigInt","isBoolean","isString","isDate","ys","isPlainObject","protoTag","stringTag","tag","hasOwn","remaining","trailer","lowbyte","entries","lineJoiner","isArr","symMap","syms","j","GetIntrinsic","callBound","$TypeError","$WeakMap","$Map","$weakMapGet","$weakMapSet","$weakMapHas","$mapGet","$mapSet","$mapHas","listGetNode","curr","next","$wm","$m","$o","channel","assert","objects","node","listGet","listHas","listSet","freeGlobal","global","self","punycode","maxInt","tMax","skew","damp","regexPunycode","regexNonASCII","regexSeparators","errors","baseMinusTMin","stringFromCharCode","fromCharCode","RangeError","mapDomain","string","ucs2decode","output","counter","ucs2encode","digitToBasic","digit","flag","adapt","delta","numPoints","firstTime","decode","input","out","basic","oldi","w","baseMinusT","codePoint","inputLength","bias","lastIndexOf","encode","handledCPCount","basicLength","currentValue","handledCPCountPlusOne","qMinusT","percentTwenties","Format","formatters","RFC1738","RFC3986","formats","allowDots","allowEmptyArrays","allowPrototypes","allowSparse","arrayLimit","charset","charsetSentinel","comma","decodeDotInKeys","decoder","delimiter","duplicates","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","plainObjects","strictNullHandling","$0","numberStr","parseArrayValue","parseKeys","givenKey","valuesParsed","segment","chain","leaf","cleanRoot","decodedRoot","isNaN","parseObject","normalizeParseOptions","tempObj","cleanStr","limit","skipIndex","part","bracketEqualsPos","pos","maybeMap","encodedVal","existing","combine","parseValues","newObj","merge","compact","getSideChannel","arrayPrefixGenerators","brackets","prefix","indices","repeat","pushToArray","valueOrArray","toISO","toISOString","defaultFormat","addQueryPrefix","arrayFormat","encodeDotInKeys","encoder","encodeValuesOnly","format","formatter","serializeDate","date","skipNulls","sentinel","generateArrayPrefix","commaRoundTrip","sideChannel","tmpSc","step","findFlag","isBuffer","objKeys","encodedPrefix","adjustedPrefix","encodedKey","keyPrefix","valueSideChannel","normalizeStringifyOptions","joined","hexTable","arrayToObject","reduce","acc","queue","refs","compacted","compactQueue","strWithoutPlus","unescape","decodeURIComponent","defaultEncoder","kind","escape","mapped","mergeTarget","targetItem","slashes","auth","hash","search","query","pathname","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","javascript","hostlessProtocol","slashedProtocol","http","https","ftp","gopher","file","querystring","urlParse","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","rest","simplePath","proto","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","bit","unshift","toASCII","ae","esc","encodeURIComponent","qm","relative","resolveObject","rel","tkeys","tk","tkey","rkeys","rk","rkey","relPath","shift","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","authInHost","hasTrailingSlash","up","isAbsolute","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","chunkIds","priority","notFulfilled","fulfilled","every","getter","definition","chunkId","all","promises","globalThis","done","script","needAttach","scripts","timeout","nc","onScriptComplete","doneFns","nmd","paths","scriptUrl","importScripts","currentScript","baseURI","installedChunks","installedChunkData","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/lib/l10n/es_MX.js b/lib/l10n/es_MX.js index e82503365e7..f02f0c30ec9 100644 --- a/lib/l10n/es_MX.js +++ b/lib/l10n/es_MX.js @@ -81,6 +81,8 @@ OC.L10N.register( "Empty file" : "Archivo vacío", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con ID: %sno existe. Por favor hablíitalo en tus configuraciones de aplicación o contacta a tu administrador. ", "Dot files are not allowed" : "Los archivos Dot no están permitidos", + "Invalid character \"%1$s\" in filename" : "Caracter inválido \"%1$s\" en el nombre de archivo", + "Invalid filename extension \"%1$s\"" : "Extensión del archivo inválida \"%1$s\"", "File already exists" : "El archivo ya existe", "Invalid path" : "Ruta inválida", "Failed to create file from template" : "No se pudo crear un archivo desde la plantilla", diff --git a/lib/l10n/es_MX.json b/lib/l10n/es_MX.json index 02d597621b7..f2f4cec6972 100644 --- a/lib/l10n/es_MX.json +++ b/lib/l10n/es_MX.json @@ -79,6 +79,8 @@ "Empty file" : "Archivo vacío", "Module with ID: %s does not exist. Please enable it in your apps settings or contact your administrator." : "El módulo con ID: %sno existe. Por favor hablíitalo en tus configuraciones de aplicación o contacta a tu administrador. ", "Dot files are not allowed" : "Los archivos Dot no están permitidos", + "Invalid character \"%1$s\" in filename" : "Caracter inválido \"%1$s\" en el nombre de archivo", + "Invalid filename extension \"%1$s\"" : "Extensión del archivo inválida \"%1$s\"", "File already exists" : "El archivo ya existe", "Invalid path" : "Ruta inválida", "Failed to create file from template" : "No se pudo crear un archivo desde la plantilla", diff --git a/lib/private/App/AppStore/Fetcher/AppFetcher.php b/lib/private/App/AppStore/Fetcher/AppFetcher.php index f9fbd05855b..3f7f5e0a3bd 100644 --- a/lib/private/App/AppStore/Fetcher/AppFetcher.php +++ b/lib/private/App/AppStore/Fetcher/AppFetcher.php @@ -185,6 +185,10 @@ class AppFetcher extends Fetcher { $allowPreReleases = $allowUnstable || $this->getChannel() === 'beta' || $this->getChannel() === 'daily' || $this->getChannel() === 'git'; $apps = parent::get($allowPreReleases); + if (empty($apps)) { + $this->logger->warning('Could not get apps from the appstore', ['app' => 'appstoreFetcher']); + return []; + } $allowList = $this->config->getSystemValue('appsallowlist'); // If the admin specified a allow list, filter apps from the appstore diff --git a/lib/private/RedisFactory.php b/lib/private/RedisFactory.php index 4903a8713df..b657a0a83af 100644 --- a/lib/private/RedisFactory.php +++ b/lib/private/RedisFactory.php @@ -29,7 +29,7 @@ namespace OC; use OCP\Diagnostics\IEventLogger; class RedisFactory { - public const REDIS_MINIMAL_VERSION = '3.1.3'; + public const REDIS_MINIMAL_VERSION = '4.0.0'; public const REDIS_EXTRA_PARAMETERS_MINIMAL_VERSION = '5.3.0'; /** @var \Redis|\RedisCluster */ diff --git a/lib/private/TextProcessing/Manager.php b/lib/private/TextProcessing/Manager.php index 6ffd0587927..7513d373ea2 100644 --- a/lib/private/TextProcessing/Manager.php +++ b/lib/private/TextProcessing/Manager.php @@ -138,7 +138,7 @@ class Manager implements IManager { $this->taskMapper->update(DbTask::fromPublicTask($task)); return $output; } catch (\Throwable $e) { - $this->logger->info('LanguageModel call using provider ' . $provider->getName() . ' failed', ['exception' => $e]); + $this->logger->error('LanguageModel call using provider ' . $provider->getName() . ' failed', ['exception' => $e]); $task->setStatus(OCPTask::STATUS_FAILED); $this->taskMapper->update(DbTask::fromPublicTask($task)); throw new TaskFailureException('LanguageModel call using provider ' . $provider->getName() . ' failed: ' . $e->getMessage(), 0, $e); |