diff --git a/js/dist/admin.js b/js/dist/admin.js index b609209..a5a3fac 100644 --- a/js/dist/admin.js +++ b/js/dist/admin.js @@ -1,4 +1,4 @@ -module.exports=function(a){var e={};function n(i){if(e[i])return e[i].exports;var t=e[i]={i:i,l:!1,exports:{}};return a[i].call(t.exports,t,t.exports,n),t.l=!0,t.exports}return n.m=a,n.c=e,n.d=function(a,e,i){n.o(a,e)||Object.defineProperty(a,e,{enumerable:!0,get:i})},n.r=function(a){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(a,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(a,"__esModule",{value:!0})},n.t=function(a,e){if(1&e&&(a=n(a)),8&e)return a;if(4&e&&"object"==typeof a&&a&&a.__esModule)return a;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:a}),2&e&&"string"!=typeof a)for(var t in a)n.d(i,t,function(e){return a[e]}.bind(null,t));return i},n.n=function(a){var e=a&&a.__esModule?function(){return a.default}:function(){return a};return n.d(e,"a",e),e},n.o=function(a,e){return Object.prototype.hasOwnProperty.call(a,e)},n.p="",n(n.s=32)}([function(a,e){a.exports=flarum.core.compat["common/Model"]},function(a,e){a.exports=flarum.core.compat["common/extend"]},function(a,e,n){"use strict";function i(a,e){a.prototype=Object.create(e.prototype),a.prototype.constructor=a,a.__proto__=e}n.d(e,"a",(function(){return i}))},function(a,e,n){"use strict";var i=n(10),t=n.n(i),o=n(6),r=n.n(o);e.a=function(a){if(a){var e=a.emoji?a.emoji():a;return e?m("img",{alt:a.country&&a.country()||"",className:"emoji",draggable:"false",loading:"lazy",src:"//cdn.jsdelivr.net/gh/twitter/twemoji@13/assets/72x72/"+t()(e)+".png"}):r()("fas fa-globe")}}},function(a,e){a.exports=flarum.core.compat["common/components/Button"]},function(a,e,n){"use strict";function i(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}n.d(e,"a",(function(){return s}));var t=n(2);function m(a,e,n){return e in a?Object.defineProperty(a,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):a[e]=n,a}var o=n(0),r=n.n(o),s=function(a){function e(){for(var e,n=arguments.length,t=new Array(n),o=0;o({code:a,name:B.getName(a),nativeName:B.getNativeName(a)}))}static getName(a){return B.validate(a)?C[a].name:""}static getAllNames(){return Object.values(C).map(a=>a.name)}static getNativeName(a){return B.validate(a)?C[a].nativeName:""}static getAllNativeNames(){return Object.values(C).map(a=>a.nativeName)}static getCode(a){return Object.keys(C).find(e=>{const n=C[e];return n.name.toLowerCase()===a.toLowerCase()||n.nativeName.toLowerCase()===a.toLowerCase()})||""}static getAllCodes(){return Object.keys(C)}static validate(a){return C.hasOwnProperty(a)}}var I=function(a){return B[a?"getAllNativeNames":"getAllNames"]().sort((function(a,e){return a>e})).reduce((function(a,e){return a[B.getCode(e)]=e,a}),{})},L=n(16),K=Object.values(L),T=function(a){var e=a?"native":"name";return K.map((function(a){return a[e]})).sort((function(a,e){return a>e})).reduce((function(a,n){var i=K.indexOf(K.filter((function(a){return a[e]===n}))[0]);return a[Object.keys(L)[i]]=n,a}),{})},z=function(a){var e=L[a];return e&&e.emoji},A=n(3),G=function(a){function e(){return a.apply(this,arguments)||this}Object(l.a)(e,a);var n=e.prototype;return n.oninit=function(e){a.prototype.oninit.call(this,e),this.updating={},this.deleting={},this.codes={},this.countries={},this.newLocale=M()(""),this.newCountry=M()(""),this.nativeKey="fof-discussion-language.native",this.native=app.data.settings[this.nativeKey],this.showFlagsKey="fof-discussion-language.showFlags",this.showFlags=app.data.settings[this.showFlagsKey],this.composerLocaleDefaultKey="fof-discussion-language.composerLocaleDefault",this.composerLocaleDefault=app.data.settings[this.composerLocaleDefaultKey]||0,this.localeSortKey="fof-discussion-language.filter_language_on_http_request",this.localeSort=app.data.settings[this.localeSortKey]},n.content=function(){var a=this,e=I(this.native),n=T(this.native);return[m("div",{className:"container"},m("div",{className:"FofDiscussionLanguagesSettingsPage"},m("div",{className:"Form-group"},f.a.component({state:this.native,onchange:function(e){a.native=e,m.redraw.sync()}},app.translator.trans("fof-discussion-language.admin.settings.native_label"))),m("div",{className:"Form-group"},f.a.component({state:this.showFlags,onchange:function(e){return a.showFlags=e}},app.translator.trans("fof-discussion-language.admin.settings.show_flag_label"))),m("div",{className:"Form-group"},f.a.component({state:this.composerLocaleDefault,onchange:function(e){return a.composerLocaleDefault=e}},app.translator.trans("fof-discussion-language.admin.settings.composer_default_label"))),m("div",{className:"Form-group"},f.a.component({state:this.localeSort,onchange:function(e){return a.localeSort=e}},app.translator.trans("fof-discussion-language.admin.settings.locale_sort_label"))),m("hr",null),m("div",{className:"Form-group flex"},N.a.component({onchange:this.newLocale,value:this.newLocale(),options:e}),N.a.component({onchange:this.newCountry,value:this.newCountry(),options:n}),Object(A.a)(z(this.newCountry())),j.a.component({className:"Button Button--primary",onclick:this.add.bind(this),disabled:!this.newLocale()||!this.newCountry()||this.adding},y()(this.adding?"fas fa-spinner fa-spin":"fas fa-plus"))),m("div",{className:"Form-group"},app.store.all("discussion-languages").map((function(i){var t=i.id(),o=a.updating[t],r=a.deleting[t],s=a.countries[t]||i.country();return m("div",{className:"flex"},N.a.component({onchange:function(e){return a.codes[t]=e},value:a.codes[t]||i.code(),options:e,disabled:o||r}),N.a.component({onchange:function(e){return a.countries[t]=e},value:s,options:n,disabled:o||r}),Object(A.a)(z(s)),j.a.component({className:"Button Button--danger",disabled:r,onclick:a.remove.bind(a,i)},y()(r?"fas fa-spinner fa-spin":"fas fa-times")))}))),m("div",{className:"Form-group"},m(j.a,{type:"submit",className:"Button Button--primary",loading:this.loading,disabled:!this.isChanged(),onclick:this.save.bind(this)},app.translator.trans("core.admin.settings.submit_button")))))]},n.onkeydown=function(a){"Enter"===a.key&&(this.add(),a.preventDefault())},n.add=function(){var a=this;if(!this.adding&&this.newLocale()){this.adding=!0;var e=this.newLocale(),n=this.newCountry();app.store.createRecord("discussion-languages").save({code:e,country:n}).then((function(){a.newLocale(""),a.adding=!1,m.redraw()})).catch((function(){return a.adding=!1}))}},n.save=function(a){var e,n=this;a.preventDefault(),this.loading=!0,Promise.all([].concat(this.dirty().map((function(a){var e=a.id();return n.updating[e]=!0,a.save({code:n.codes[e],country:n.countries[e]}).then((function(){}),(function(){})).then((function(){n.updating[e]=!1}))})),[S()((e={},e[this.nativeKey]=this.native,e[this.showFlagsKey]=this.showFlags,e[this.composerLocaleDefaultKey]=this.composerLocaleDefault,e[this.localeSortKey]=this.localeSort,e)).then(this.onsaved.bind(this))]))},n.remove=function(a){var e=this;this.deleting[a.id()]=!0,a.delete().then((function(){}),(function(){})).then((function(){delete e.deleting[a.id()],m.redraw()}))},n.dirty=function(){var a=this;return app.store.all("discussion-languages").filter((function(e){var n=e.id();return a.codes[n]&&a.codes[n]!==e.code()||a.countries[n]&&a.countries[n]!==e.country()}))},n.isChanged=function(){var a=this.dirty().length,e=Number(this.native)!==Number(app.data.settings[this.nativeKey]||0),n=Number(this.showFlags)!==Number(app.data.settings[this.showFlagsKey]||0),i=Number(this.composerLocaleDefault)!==Number(app.data.settings[this.composerLocaleDefaultKey]||0),t=Number(this.localeSort)!==Number(app.data.settings[this.localeSortKey]||0);return a||e||n||i||t},e}(d.a),P=n(5),_={LanguagesSettingsPage:G};function F(){return(F=Object.assign||function(a){for(var e=1;e({code:a,name:B.getName(a),nativeName:B.getNativeName(a)}))}static getName(a){return B.validate(a)?C[a].name:""}static getAllNames(){return Object.values(C).map(a=>a.name)}static getNativeName(a){return B.validate(a)?C[a].nativeName:""}static getAllNativeNames(){return Object.values(C).map(a=>a.nativeName)}static getCode(a){return Object.keys(C).find(e=>{const n=C[e];return n.name.toLowerCase()===a.toLowerCase()||n.nativeName.toLowerCase()===a.toLowerCase()})||""}static getAllCodes(){return Object.keys(C)}static validate(a){return C.hasOwnProperty(a)}}var I=function(a){return B[a?"getAllNativeNames":"getAllNames"]().sort((function(a,e){return a>e})).reduce((function(a,e){return a[B.getCode(e)]=e,a}),{})},L=n(17),K=Object.values(L),T=function(a){var e=a?"native":"name";return K.map((function(a){return a[e]})).sort((function(a,e){return a>e})).reduce((function(a,n){var i=K.indexOf(K.filter((function(a){return a[e]===n}))[0]);return a[Object.keys(L)[i]]=n,a}),{})},z=function(a){var e=L[a];return e&&e.emoji},A=n(3),G=function(a){function e(){return a.apply(this,arguments)||this}Object(l.a)(e,a);var n=e.prototype;return n.oninit=function(e){a.prototype.oninit.call(this,e),this.updating={},this.deleting={},this.codes={},this.countries={},this.newLocale=M()(""),this.newCountry=M()(""),this.nativeKey="fof-discussion-language.native",this.native=app.data.settings[this.nativeKey],this.showFlagsKey="fof-discussion-language.showFlags",this.showFlags=app.data.settings[this.showFlagsKey],this.composerLocaleDefaultKey="fof-discussion-language.composerLocaleDefault",this.composerLocaleDefault=app.data.settings[this.composerLocaleDefaultKey]||0,this.localeSortKey="fof-discussion-language.filter_language_on_http_request",this.localeSort=app.data.settings[this.localeSortKey]},n.content=function(){var a=this,e=I(this.native),n=T(this.native);return[m("div",{className:"container"},m("div",{className:"FofDiscussionLanguagesSettingsPage"},m("div",{className:"Form-group"},f.a.component({state:this.native,onchange:function(e){a.native=e,m.redraw.sync()}},app.translator.trans("fof-discussion-language.admin.settings.native_label"))),m("div",{className:"Form-group"},f.a.component({state:this.showFlags,onchange:function(e){return a.showFlags=e}},app.translator.trans("fof-discussion-language.admin.settings.show_flag_label"))),m("div",{className:"Form-group"},f.a.component({state:this.composerLocaleDefault,onchange:function(e){return a.composerLocaleDefault=e}},app.translator.trans("fof-discussion-language.admin.settings.composer_default_label"))),m("div",{className:"Form-group"},f.a.component({state:this.localeSort,onchange:function(e){return a.localeSort=e}},app.translator.trans("fof-discussion-language.admin.settings.locale_sort_label"))),m("hr",null),m("div",{className:"Form-group flex"},N.a.component({onchange:this.newLocale,value:this.newLocale(),options:e}),N.a.component({onchange:this.newCountry,value:this.newCountry(),options:n}),Object(A.a)(z(this.newCountry())),j.a.component({className:"Button Button--primary",onclick:this.add.bind(this),disabled:!this.newLocale()||!this.newCountry()||this.adding},y()(this.adding?"fas fa-spinner fa-spin":"fas fa-plus"))),m("div",{className:"Form-group"},app.store.all("discussion-languages").map((function(i){var t=i.id(),o=a.updating[t],r=a.deleting[t],s=a.countries[t]||i.country();return m("div",{className:"flex"},N.a.component({onchange:function(e){return a.codes[t]=e},value:a.codes[t]||i.code(),options:e,disabled:o||r}),N.a.component({onchange:function(e){return a.countries[t]=e},value:s,options:n,disabled:o||r}),Object(A.a)(z(s)),j.a.component({className:"Button Button--danger",disabled:r,onclick:a.remove.bind(a,i)},y()(r?"fas fa-spinner fa-spin":"fas fa-times")))}))),m("div",{className:"Form-group"},m(j.a,{type:"submit",className:"Button Button--primary",loading:this.loading,disabled:!this.isChanged(),onclick:this.save.bind(this)},app.translator.trans("core.admin.settings.submit_button")))))]},n.onkeydown=function(a){"Enter"===a.key&&(this.add(),a.preventDefault())},n.add=function(){var a=this;if(!this.adding&&this.newLocale()){this.adding=!0;var e=this.newLocale(),n=this.newCountry();app.store.createRecord("discussion-languages").save({code:e,country:n}).then((function(){a.newLocale(""),a.adding=!1,m.redraw()})).catch((function(){return a.adding=!1}))}},n.save=function(a){var e,n=this;a.preventDefault(),this.loading=!0,Promise.all([].concat(this.dirty().map((function(a){var e=a.id();return n.updating[e]=!0,a.save({code:n.codes[e],country:n.countries[e]}).then((function(){}),(function(){})).then((function(){n.updating[e]=!1}))})),[S()((e={},e[this.nativeKey]=this.native,e[this.showFlagsKey]=this.showFlags,e[this.composerLocaleDefaultKey]=this.composerLocaleDefault,e[this.localeSortKey]=this.localeSort,e)).then(this.onsaved.bind(this))]))},n.remove=function(a){var e=this;this.deleting[a.id()]=!0,a.delete().then((function(){}),(function(){})).then((function(){delete e.deleting[a.id()],m.redraw()}))},n.dirty=function(){var a=this;return app.store.all("discussion-languages").filter((function(e){var n=e.id();return a.codes[n]&&a.codes[n]!==e.code()||a.countries[n]&&a.countries[n]!==e.country()}))},n.isChanged=function(){var a=this.dirty().length,e=Number(this.native)!==Number(app.data.settings[this.nativeKey]||0),n=Number(this.showFlags)!==Number(app.data.settings[this.showFlagsKey]||0),i=Number(this.composerLocaleDefault)!==Number(app.data.settings[this.composerLocaleDefaultKey]||0),t=Number(this.localeSort)!==Number(app.data.settings[this.localeSortKey]||0);return a||e||n||i||t},e}(d.a),P=n(6),_={LanguagesSettingsPage:G};function F(){return(F=Object.assign||function(a){for(var e=1;e {\n if (!language) return;\n\n const emoji = language.emoji ? language.emoji() : language;\n\n return emoji ? (\n \n ) : (\n icon('fas fa-globe')\n );\n};\n","module.exports = flarum.core.compat['common/components/Button'];","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _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}","import Model from 'flarum/common/Model';\n\nexport default class Language extends Model {\n code = Model.attribute('code');\n country = Model.attribute('country');\n\n name = Model.attribute('name');\n emoji = Model.attribute('emoji');\n\n apiEndpoint() {\n return `/fof/discussion-language${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","module.exports = flarum.core.compat['common/helpers/icon'];","module.exports = flarum.core.compat['common/models/Forum'];","import Language from './Language';\n\nexport const models = {\n Language,\n};\n","import flag from './flag';\n\nexport const utils = {\n flag,\n};\n","/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */\n/* https://github.com/twitter/twemoji/blob/gh-pages/LICENSE */\n\nmodule.exports = function (str) {\n var r = []\n var c = 0\n var p = 0\n var i = 0\n var l = str.length\n\n while (i < l) {\n c = str.charCodeAt(i++)\n if (p) {\n r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16))\n p = 0\n } else if (0xD800 <= c && c <= 0xDBFF) {\n p = c\n } else {\n r.push(c.toString(16))\n }\n }\n\n return r.join('-')\n}\n","module.exports = flarum.core.compat['common/components/Select'];","module.exports = flarum.core.compat['common/components/Switch'];","module.exports = flarum.core.compat['common/utils/Stream'];","module.exports = flarum.core.compat['admin/components/PermissionGrid'];","module.exports = flarum.core.compat['admin/components/SettingDropdown'];","module.exports = flarum.core.compat['admin/components/ExtensionPage'];","module.exports = flarum.core.compat['admin/utils/saveSettings'];","const LANGUAGES_LIST = {\n aa: {\n name: 'Afar',\n nativeName: 'Afaraf',\n },\n ab: {\n name: 'Abkhaz',\n nativeName: 'аҧсуа бызшәа',\n },\n ae: {\n name: 'Avestan',\n nativeName: 'avesta',\n },\n af: {\n name: 'Afrikaans',\n nativeName: 'Afrikaans',\n },\n ak: {\n name: 'Akan',\n nativeName: 'Akan',\n },\n am: {\n name: 'Amharic',\n nativeName: 'አማርኛ',\n },\n an: {\n name: 'Aragonese',\n nativeName: 'aragonés',\n },\n ar: {\n name: 'Arabic',\n nativeName: 'اللغة العربية',\n },\n as: {\n name: 'Assamese',\n nativeName: 'অসমীয়া',\n },\n av: {\n name: 'Avaric',\n nativeName: 'авар мацӀ',\n },\n ay: {\n name: 'Aymara',\n nativeName: 'aymar aru',\n },\n az: {\n name: 'Azerbaijani',\n nativeName: 'azərbaycan dili',\n },\n ba: {\n name: 'Bashkir',\n nativeName: 'башҡорт теле',\n },\n be: {\n name: 'Belarusian',\n nativeName: 'беларуская мова',\n },\n bg: {\n name: 'Bulgarian',\n nativeName: 'български език',\n },\n bh: {\n name: 'Bihari',\n nativeName: 'भोजपुरी',\n },\n bi: {\n name: 'Bislama',\n nativeName: 'Bislama',\n },\n bm: {\n name: 'Bambara',\n nativeName: 'bamanankan',\n },\n bn: {\n name: 'Bengali',\n nativeName: 'বাংলা',\n },\n bo: {\n name: 'Tibetan Standard',\n nativeName: 'བོད་ཡིག',\n },\n br: {\n name: 'Breton',\n nativeName: 'brezhoneg',\n },\n bs: {\n name: 'Bosnian',\n nativeName: 'bosanski jezik',\n },\n ca: {\n name: 'Catalan',\n nativeName: 'Català',\n },\n ce: {\n name: 'Chechen',\n nativeName: 'нохчийн мотт',\n },\n ch: {\n name: 'Chamorro',\n nativeName: 'Chamoru',\n },\n co: {\n name: 'Corsican',\n nativeName: 'corsu',\n },\n cr: {\n name: 'Cree',\n nativeName: 'ᓀᐦᐃᔭᐍᐏᐣ',\n },\n cs: {\n name: 'Czech',\n nativeName: 'čeština',\n },\n cu: {\n name: 'Old Church Slavonic',\n nativeName: 'ѩзыкъ словѣньскъ',\n },\n cv: {\n name: 'Chuvash',\n nativeName: 'чӑваш чӗлхи',\n },\n cy: {\n name: 'Welsh',\n nativeName: 'Cymraeg',\n },\n da: {\n name: 'Danish',\n nativeName: 'dansk',\n },\n de: {\n name: 'German',\n nativeName: 'Deutsch',\n },\n dv: {\n name: 'Divehi',\n nativeName: 'Dhivehi',\n },\n dz: {\n name: 'Dzongkha',\n nativeName: 'རྫོང་ཁ',\n },\n ee: {\n name: 'Ewe',\n nativeName: 'Eʋegbe',\n },\n el: {\n name: 'Greek',\n nativeName: 'Ελληνικά',\n },\n en: {\n name: 'English',\n nativeName: 'English',\n },\n eo: {\n name: 'Esperanto',\n nativeName: 'Esperanto',\n },\n es: {\n name: 'Spanish',\n nativeName: 'Español',\n },\n et: {\n name: 'Estonian',\n nativeName: 'eesti',\n },\n eu: {\n name: 'Basque',\n nativeName: 'euskara',\n },\n fa: {\n name: 'Persian',\n nativeName: 'فارسی',\n },\n ff: {\n name: 'Fula',\n nativeName: 'Fulfulde',\n },\n fi: {\n name: 'Finnish',\n nativeName: 'suomi',\n },\n fj: {\n name: 'Fijian',\n nativeName: 'Vakaviti',\n },\n fo: {\n name: 'Faroese',\n nativeName: 'føroyskt',\n },\n fr: {\n name: 'French',\n nativeName: 'Français',\n },\n fy: {\n name: 'Western Frisian',\n nativeName: 'Frysk',\n },\n ga: {\n name: 'Irish',\n nativeName: 'Gaeilge',\n },\n gd: {\n name: 'Scottish Gaelic',\n nativeName: 'Gàidhlig',\n },\n gl: {\n name: 'Galician',\n nativeName: 'galego',\n },\n gn: {\n name: 'Guaraní',\n nativeName: \"Avañe'ẽ\",\n },\n gu: {\n name: 'Gujarati',\n nativeName: 'ગુજરાતી',\n },\n gv: {\n name: 'Manx',\n nativeName: 'Gaelg',\n },\n ha: {\n name: 'Hausa',\n nativeName: 'هَوُسَ',\n },\n he: {\n name: 'Hebrew',\n nativeName: 'עברית',\n },\n hi: {\n name: 'Hindi',\n nativeName: 'हिन्दी',\n },\n ho: {\n name: 'Hiri Motu',\n nativeName: 'Hiri Motu',\n },\n hr: {\n name: 'Croatian',\n nativeName: 'hrvatski jezik',\n },\n ht: {\n name: 'Haitian',\n nativeName: 'Kreyòl ayisyen',\n },\n hu: {\n name: 'Hungarian',\n nativeName: 'Magyar',\n },\n hy: {\n name: 'Armenian',\n nativeName: 'Հայերեն',\n },\n hz: {\n name: 'Herero',\n nativeName: 'Otjiherero',\n },\n ia: {\n name: 'Interlingua',\n nativeName: 'Interlingua',\n },\n id: {\n name: 'Indonesian',\n nativeName: 'Bahasa Indonesia',\n },\n ie: {\n name: 'Interlingue',\n nativeName: 'Interlingue',\n },\n ig: {\n name: 'Igbo',\n nativeName: 'Asụsụ Igbo',\n },\n ii: {\n name: 'Nuosu',\n nativeName: 'ꆈꌠ꒿ Nuosuhxop',\n },\n ik: {\n name: 'Inupiaq',\n nativeName: 'Iñupiaq',\n },\n io: {\n name: 'Ido',\n nativeName: 'Ido',\n },\n is: {\n name: 'Icelandic',\n nativeName: 'Íslenska',\n },\n it: {\n name: 'Italian',\n nativeName: 'Italiano',\n },\n iu: {\n name: 'Inuktitut',\n nativeName: 'ᐃᓄᒃᑎᑐᑦ',\n },\n ja: {\n name: 'Japanese',\n nativeName: '日本語',\n },\n jv: {\n name: 'Javanese',\n nativeName: 'basa Jawa',\n },\n ka: {\n name: 'Georgian',\n nativeName: 'ქართული',\n },\n kg: {\n name: 'Kongo',\n nativeName: 'Kikongo',\n },\n ki: {\n name: 'Kikuyu',\n nativeName: 'Gĩkũyũ',\n },\n kj: {\n name: 'Kwanyama',\n nativeName: 'Kuanyama',\n },\n kk: {\n name: 'Kazakh',\n nativeName: 'қазақ тілі',\n },\n kl: {\n name: 'Kalaallisut',\n nativeName: 'kalaallisut',\n },\n km: {\n name: 'Khmer',\n nativeName: 'ខេមរភាសា',\n },\n kn: {\n name: 'Kannada',\n nativeName: 'ಕನ್ನಡ',\n },\n ko: {\n name: 'Korean',\n nativeName: '한국어',\n },\n kr: {\n name: 'Kanuri',\n nativeName: 'Kanuri',\n },\n ks: {\n name: 'Kashmiri',\n nativeName: 'कश्मीरी',\n },\n ku: {\n name: 'Kurdish',\n nativeName: 'Kurdî',\n },\n kv: {\n name: 'Komi',\n nativeName: 'коми кыв',\n },\n kw: {\n name: 'Cornish',\n nativeName: 'Kernewek',\n },\n ky: {\n name: 'Kyrgyz',\n nativeName: 'Кыргызча',\n },\n la: {\n name: 'Latin',\n nativeName: 'latine',\n },\n lb: {\n name: 'Luxembourgish',\n nativeName: 'Lëtzebuergesch',\n },\n lg: {\n name: 'Ganda',\n nativeName: 'Luganda',\n },\n li: {\n name: 'Limburgish',\n nativeName: 'Limburgs',\n },\n ln: {\n name: 'Lingala',\n nativeName: 'Lingála',\n },\n lo: {\n name: 'Lao',\n nativeName: 'ພາສາ',\n },\n lt: {\n name: 'Lithuanian',\n nativeName: 'lietuvių kalba',\n },\n lu: {\n name: 'Luba-Katanga',\n nativeName: 'Tshiluba',\n },\n lv: {\n name: 'Latvian',\n nativeName: 'latviešu valoda',\n },\n mg: {\n name: 'Malagasy',\n nativeName: 'fiteny malagasy',\n },\n mh: {\n name: 'Marshallese',\n nativeName: 'Kajin M̧ajeļ',\n },\n mi: {\n name: 'Māori',\n nativeName: 'te reo Māori',\n },\n mk: {\n name: 'Macedonian',\n nativeName: 'македонски јазик',\n },\n ml: {\n name: 'Malayalam',\n nativeName: 'മലയാളം',\n },\n mn: {\n name: 'Mongolian',\n nativeName: 'Монгол хэл',\n },\n mr: {\n name: 'Marathi',\n nativeName: 'मराठी',\n },\n ms: {\n name: 'Malay',\n nativeName: 'Bahasa Malaysia',\n },\n mt: {\n name: 'Maltese',\n nativeName: 'Malti',\n },\n my: {\n name: 'Burmese',\n nativeName: 'ဗမာစာ',\n },\n na: {\n name: 'Nauru',\n nativeName: 'Ekakairũ Naoero',\n },\n nb: {\n name: 'Norwegian Bokmål',\n nativeName: 'Norsk bokmål',\n },\n nd: {\n name: 'Northern Ndebele',\n nativeName: 'isiNdebele',\n },\n ne: {\n name: 'Nepali',\n nativeName: 'नेपाली',\n },\n ng: {\n name: 'Ndonga',\n nativeName: 'Owambo',\n },\n nl: {\n name: 'Dutch',\n nativeName: 'Nederlands',\n },\n nn: {\n name: 'Norwegian Nynorsk',\n nativeName: 'Norsk nynorsk',\n },\n no: {\n name: 'Norwegian',\n nativeName: 'Norsk',\n },\n nr: {\n name: 'Southern Ndebele',\n nativeName: 'isiNdebele',\n },\n nv: {\n name: 'Navajo',\n nativeName: 'Diné bizaad',\n },\n ny: {\n name: 'Chichewa',\n nativeName: 'chiCheŵa',\n },\n oc: {\n name: 'Occitan',\n nativeName: 'occitan',\n },\n oj: {\n name: 'Ojibwe',\n nativeName: 'ᐊᓂᔑᓈᐯᒧᐎᓐ',\n },\n om: {\n name: 'Oromo',\n nativeName: 'Afaan Oromoo',\n },\n or: {\n name: 'Oriya',\n nativeName: 'ଓଡ଼ିଆ',\n },\n os: {\n name: 'Ossetian',\n nativeName: 'ирон æвзаг',\n },\n pa: {\n name: 'Panjabi',\n nativeName: 'ਪੰਜਾਬੀ',\n },\n pi: {\n name: 'Pāli',\n nativeName: 'पाऴि',\n },\n pl: {\n name: 'Polish',\n nativeName: 'język polski',\n },\n ps: {\n name: 'Pashto',\n nativeName: 'پښتو',\n },\n pt: {\n name: 'Portuguese',\n nativeName: 'Português',\n },\n qu: {\n name: 'Quechua',\n nativeName: 'Runa Simi',\n },\n rm: {\n name: 'Romansh',\n nativeName: 'rumantsch grischun',\n },\n rn: {\n name: 'Kirundi',\n nativeName: 'Ikirundi',\n },\n ro: {\n name: 'Romanian',\n nativeName: 'Română',\n },\n ru: {\n name: 'Russian',\n nativeName: 'Русский',\n },\n rw: {\n name: 'Kinyarwanda',\n nativeName: 'Ikinyarwanda',\n },\n sa: {\n name: 'Sanskrit',\n nativeName: 'संस्कृतम्',\n },\n sc: {\n name: 'Sardinian',\n nativeName: 'sardu',\n },\n sd: {\n name: 'Sindhi',\n nativeName: 'सिन्धी',\n },\n se: {\n name: 'Northern Sami',\n nativeName: 'Davvisámegiella',\n },\n sg: {\n name: 'Sango',\n nativeName: 'yângâ tî sängö',\n },\n si: {\n name: 'Sinhala',\n nativeName: 'සිංහල',\n },\n sk: {\n name: 'Slovak',\n nativeName: 'slovenčina',\n },\n sl: {\n name: 'Slovene',\n nativeName: 'slovenski jezik',\n },\n sm: {\n name: 'Samoan',\n nativeName: \"gagana fa'a Samoa\",\n },\n sn: {\n name: 'Shona',\n nativeName: 'chiShona',\n },\n so: {\n name: 'Somali',\n nativeName: 'Soomaaliga',\n },\n sq: {\n name: 'Albanian',\n nativeName: 'Shqip',\n },\n sr: {\n name: 'Serbian',\n nativeName: 'српски језик',\n },\n ss: {\n name: 'Swati',\n nativeName: 'SiSwati',\n },\n st: {\n name: 'Southern Sotho',\n nativeName: 'Sesotho',\n },\n su: {\n name: 'Sundanese',\n nativeName: 'Basa Sunda',\n },\n sv: {\n name: 'Swedish',\n nativeName: 'Svenska',\n },\n sw: {\n name: 'Swahili',\n nativeName: 'Kiswahili',\n },\n ta: {\n name: 'Tamil',\n nativeName: 'தமிழ்',\n },\n te: {\n name: 'Telugu',\n nativeName: 'తెలుగు',\n },\n tg: {\n name: 'Tajik',\n nativeName: 'тоҷикӣ',\n },\n th: {\n name: 'Thai',\n nativeName: 'ไทย',\n },\n ti: {\n name: 'Tigrinya',\n nativeName: 'ትግርኛ',\n },\n tk: {\n name: 'Turkmen',\n nativeName: 'Türkmen',\n },\n tl: {\n name: 'Tagalog',\n nativeName: 'Wikang Tagalog',\n },\n tn: {\n name: 'Tswana',\n nativeName: 'Setswana',\n },\n to: {\n name: 'Tonga',\n nativeName: 'faka Tonga',\n },\n tr: {\n name: 'Turkish',\n nativeName: 'Türkçe',\n },\n ts: {\n name: 'Tsonga',\n nativeName: 'Xitsonga',\n },\n tt: {\n name: 'Tatar',\n nativeName: 'татар теле',\n },\n tw: {\n name: 'Twi',\n nativeName: 'Twi',\n },\n ty: {\n name: 'Tahitian',\n nativeName: 'Reo Tahiti',\n },\n ug: {\n name: 'Uyghur',\n nativeName: 'ئۇيغۇرچە‎',\n },\n uk: {\n name: 'Ukrainian',\n nativeName: 'Українська',\n },\n ur: {\n name: 'Urdu',\n nativeName: 'اردو',\n },\n uz: {\n name: 'Uzbek',\n nativeName: 'Ўзбек',\n },\n ve: {\n name: 'Venda',\n nativeName: 'Tshivenḓa',\n },\n vi: {\n name: 'Vietnamese',\n nativeName: 'Tiếng Việt',\n },\n vo: {\n name: 'Volapük',\n nativeName: 'Volapük',\n },\n wa: {\n name: 'Walloon',\n nativeName: 'walon',\n },\n wo: {\n name: 'Wolof',\n nativeName: 'Wollof',\n },\n xh: {\n name: 'Xhosa',\n nativeName: 'isiXhosa',\n },\n yi: {\n name: 'Yiddish',\n nativeName: 'ייִדיש',\n },\n yo: {\n name: 'Yoruba',\n nativeName: 'Yorùbá',\n },\n za: {\n name: 'Zhuang',\n nativeName: 'Saɯ cueŋƅ',\n },\n zh: {\n name: 'Chinese',\n nativeName: '中文',\n },\n zu: {\n name: 'Zulu',\n nativeName: 'isiZulu',\n },\n};\n\nexport default LANGUAGES_LIST;\n","import LANGUAGES_LIST from './data';\n\nexport default class ISO6391 {\n static getLanguages(codes = []) {\n return codes.map(code => ({\n code,\n name: ISO6391.getName(code),\n nativeName: ISO6391.getNativeName(code),\n }));\n }\n\n static getName(code) {\n return ISO6391.validate(code) ? LANGUAGES_LIST[code].name : '';\n }\n\n static getAllNames() {\n return Object.values(LANGUAGES_LIST).map(l => l.name);\n }\n\n static getNativeName(code) {\n return ISO6391.validate(code) ? LANGUAGES_LIST[code].nativeName : '';\n }\n\n static getAllNativeNames() {\n return Object.values(LANGUAGES_LIST).map(l => l.nativeName);\n }\n\n static getCode(name) {\n const code = Object.keys(LANGUAGES_LIST).find(code => {\n const language = LANGUAGES_LIST[code];\n\n return (\n language.name.toLowerCase() === name.toLowerCase() ||\n language.nativeName.toLowerCase() === name.toLowerCase()\n );\n });\n return code || '';\n }\n\n static getAllCodes() {\n return Object.keys(LANGUAGES_LIST);\n }\n\n static validate(code) {\n return LANGUAGES_LIST.hasOwnProperty(code);\n }\n}\n","import ISO6391 from 'iso-639-1';\n\nexport default (native) =>\n ISO6391[native ? 'getAllNativeNames' : 'getAllNames']()\n .sort((a, b) => a > b)\n .reduce((o, name) => {\n o[ISO6391.getCode(name)] = name;\n\n return o;\n }, {});\n\nexport const getName = (code, native) => ISO6391[native ? 'getNativeName' : 'getName'](code);\n","import countries from '../../common/generated/countries.json';\n\nconst data = Object.values(countries);\n\nexport default (native) => {\n const key = native ? 'native' : 'name';\n\n return data\n .map((c) => c[key])\n .sort((a, b) => a > b)\n .reduce((o, name) => {\n const i = data.indexOf(data.filter((c) => c[key] === name)[0]);\n\n o[Object.keys(countries)[i]] = name;\n\n return o;\n }, {});\n};\n\nexport const getCountryEmoji = (code) => {\n const country = countries[code];\n\n return country && country.emoji;\n};\n","import ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport Select from 'flarum/common/components/Select';\nimport Switch from 'flarum/common/components/Switch';\nimport icon from 'flarum/common/helpers/icon';\nimport saveSettings from 'flarum/admin/utils/saveSettings';\nimport Stream from 'flarum/common/utils/Stream';\nimport getLocales from '../utils/locales';\nimport { default as getCountries, getCountryEmoji } from '../utils/countries';\nimport flag from '../../common/utils/flag';\n\nexport default class LanguagesSettingsPage extends ExtensionPage {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.updating = {};\n this.deleting = {};\n\n this.codes = {};\n this.countries = {};\n\n this.newLocale = Stream('');\n this.newCountry = Stream('');\n\n this.nativeKey = 'fof-discussion-language.native';\n this.native = app.data.settings[this.nativeKey];\n\n this.showFlagsKey = 'fof-discussion-language.showFlags';\n this.showFlags = app.data.settings[this.showFlagsKey];\n\n this.composerLocaleDefaultKey = 'fof-discussion-language.composerLocaleDefault';\n this.composerLocaleDefault = app.data.settings[this.composerLocaleDefaultKey] || 0;\n\n this.localeSortKey = 'fof-discussion-language.filter_language_on_http_request';\n this.localeSort = app.data.settings[this.localeSortKey];\n }\n\n content() {\n const locales = getLocales(this.native);\n const countries = getCountries(this.native);\n\n return [\n
\n
\n
\n {Switch.component(\n {\n state: this.native,\n onchange: (val) => {\n this.native = val;\n m.redraw.sync();\n },\n },\n app.translator.trans('fof-discussion-language.admin.settings.native_label')\n )}\n
\n\n
\n {Switch.component(\n {\n state: this.showFlags,\n onchange: (val) => (this.showFlags = val),\n },\n app.translator.trans('fof-discussion-language.admin.settings.show_flag_label')\n )}\n
\n\n
\n {Switch.component(\n {\n state: this.composerLocaleDefault,\n onchange: (val) => (this.composerLocaleDefault = val),\n },\n app.translator.trans('fof-discussion-language.admin.settings.composer_default_label')\n )}\n
\n\n
\n {Switch.component(\n {\n state: this.localeSort,\n onchange: (value) => (this.localeSort = value),\n },\n app.translator.trans('fof-discussion-language.admin.settings.locale_sort_label')\n )}\n
\n\n
\n\n
\n {Select.component({\n onchange: this.newLocale,\n value: this.newLocale(),\n options: locales,\n })}\n\n {Select.component({\n onchange: this.newCountry,\n value: this.newCountry(),\n options: countries,\n })}\n\n {flag(getCountryEmoji(this.newCountry()))}\n\n {Button.component(\n {\n className: 'Button Button--primary',\n onclick: this.add.bind(this),\n disabled: !this.newLocale() || !this.newCountry() || this.adding,\n },\n icon(this.adding ? 'fas fa-spinner fa-spin' : 'fas fa-plus')\n )}\n
\n\n
\n {app.store.all('discussion-languages').map((language) => {\n const id = language.id();\n const updating = this.updating[id];\n const deleting = this.deleting[id];\n\n const country = this.countries[id] || language.country();\n\n return (\n
\n {Select.component({\n onchange: (val) => (this.codes[id] = val),\n value: this.codes[id] || language.code(),\n options: locales,\n disabled: updating || deleting,\n })}\n\n {Select.component({\n onchange: (val) => (this.countries[id] = val),\n value: country,\n options: countries,\n disabled: updating || deleting,\n })}\n\n {flag(getCountryEmoji(country))}\n\n {Button.component(\n {\n className: `Button Button--danger`,\n disabled: deleting,\n onclick: this.remove.bind(this, language),\n },\n icon(deleting ? 'fas fa-spinner fa-spin' : 'fas fa-times')\n )}\n
\n );\n })}\n
\n\n
\n \n {app.translator.trans('core.admin.settings.submit_button')}\n \n
\n
\n
,\n ];\n }\n\n onkeydown(e) {\n if (e.key === 'Enter') {\n this.add();\n e.preventDefault();\n }\n }\n\n add() {\n if (this.adding || !this.newLocale()) return;\n\n this.adding = true;\n\n const code = this.newLocale();\n const country = this.newCountry();\n const language = app.store.createRecord('discussion-languages');\n\n language\n .save({ code, country })\n .then(() => {\n this.newLocale('');\n\n this.adding = false;\n\n m.redraw();\n })\n .catch(() => (this.adding = false));\n }\n\n save(e) {\n e.preventDefault();\n\n this.loading = true;\n\n Promise.all([\n ...this.dirty().map((language) => {\n const id = language.id();\n\n this.updating[id] = true;\n\n return language\n .save({ code: this.codes[id], country: this.countries[id] })\n .then(\n () => {},\n () => {}\n )\n .then(() => {\n this.updating[id] = false;\n });\n }),\n saveSettings({\n [this.nativeKey]: this.native,\n [this.showFlagsKey]: this.showFlags,\n [this.composerLocaleDefaultKey]: this.composerLocaleDefault,\n [this.localeSortKey]: this.localeSort,\n }).then(this.onsaved.bind(this)),\n ]);\n }\n\n remove(language) {\n this.deleting[language.id()] = true;\n\n language\n .delete()\n .then(\n () => {},\n () => {}\n )\n .then(() => {\n delete this.deleting[language.id()];\n m.redraw();\n });\n }\n\n dirty() {\n return app.store.all('discussion-languages').filter((l) => {\n const id = l.id();\n\n return (this.codes[id] && this.codes[id] !== l.code()) || (this.countries[id] && this.countries[id] !== l.country());\n });\n }\n\n isChanged() {\n const dirty = this.dirty().length;\n const native = Number(this.native) !== Number(app.data.settings[this.nativeKey] || 0);\n const flag = Number(this.showFlags) !== Number(app.data.settings[this.showFlagsKey] || 0);\n const composerLocale = Number(this.composerLocaleDefault) !== Number(app.data.settings[this.composerLocaleDefaultKey] || 0);\n const locale = Number(this.localeSort) !== Number(app.data.settings[this.localeSortKey] || 0);\n\n return dirty || native || flag || composerLocale || locale;\n }\n}\n","import LanguagesSettingsPage from './LanguagesSettingsPage';\n\nexport const components = {\n LanguagesSettingsPage,\n};\n","export default function _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}","import countries, { getCountryEmoji } from './countries';\nimport locales, { getName } from './locales';\nimport { utils as commonUtils } from '../../common/utils';\n\nexport const utils = {\n countries,\n getCountryEmoji,\n locales,\n getName,\n ...commonUtils,\n};\n","import { extend } from 'flarum/common/extend';\nimport Forum from 'flarum/common/models/Forum';\nimport PermissionGrid from 'flarum/admin/components/PermissionGrid';\nimport SettingDropdown from 'flarum/admin/components/SettingDropdown';\n\nimport LanguagesSettingsPage from './components/LanguagesSettingsPage';\nimport Language from '../common/models/Language';\n\nexport * from './components';\nexport * from './utils';\nexport * from '../common/models';\n\napp.initializers.add('fof/discussion-language', () => {\n app.store.models['discussion-languages'] = Language;\n\n Forum.prototype.discussionLanguages = Forum.hasMany('discussionLanguages');\n\n app.extensionData.for('fof-discussion-language').registerPage(LanguagesSettingsPage);\n\n // This extend must remain for now, as the new admin UI in beta 15 does not currently support the custom dropdown\n extend(PermissionGrid.prototype, 'startItems', (items) => {\n items.add(\n 'allowLanguageChange',\n {\n icon: 'fas fa-globe',\n label: app.translator.trans('fof-discussion-language.admin.permissions.allow_change_language_label'),\n setting: () => {\n const minutes = parseInt(app.data.settings['fof-discussion-language.allow_tag_change'], 10);\n\n return SettingDropdown.component({\n defaultLabel: minutes\n ? app.translator.trans('core.admin.permissions_controls.allow_some_minutes_button', minutes, { count: minutes })\n : app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button'),\n key: 'fof-discussion-language.allow_language_change',\n options: [\n { value: '-1', label: app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button') },\n { value: '10', label: app.translator.trans('core.admin.permissions_controls.allow_ten_minutes_button') },\n { value: 'reply', label: app.translator.trans('core.admin.permissions_controls.allow_until_reply_button') },\n ],\n });\n },\n },\n 90\n );\n });\n});\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@fof/discussion-language/webpack/bootstrap","webpack://@fof/discussion-language/external \"flarum.core.compat['common/Model']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/extend']\"","webpack://@fof/discussion-language/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/discussion-language/./src/common/utils/flag.js","webpack://@fof/discussion-language/external \"flarum.core.compat['common/components/Button']\"","webpack://@fof/discussion-language/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@fof/discussion-language/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@fof/discussion-language/./src/common/models/Language.js","webpack://@fof/discussion-language/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/models/Forum']\"","webpack://@fof/discussion-language/./src/common/models/index.js","webpack://@fof/discussion-language/./src/common/utils/index.js","webpack://@fof/discussion-language/./node_modules/twemoji-basename/index.js","webpack://@fof/discussion-language/external \"flarum.core.compat['common/components/Select']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/components/Switch']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/utils/Stream']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['admin/components/PermissionGrid']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['admin/components/SettingDropdown']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['admin/components/ExtensionPage']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['admin/utils/saveSettings']\"","webpack://@fof/discussion-language/./node_modules/iso-639-1/src/data.js","webpack://@fof/discussion-language/./node_modules/iso-639-1/src/index.js","webpack://@fof/discussion-language/./src/admin/utils/locales.js","webpack://@fof/discussion-language/./src/admin/utils/countries.js","webpack://@fof/discussion-language/./src/admin/components/LanguagesSettingsPage.js","webpack://@fof/discussion-language/./src/admin/components/index.js","webpack://@fof/discussion-language/./node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@fof/discussion-language/./src/admin/utils/index.js","webpack://@fof/discussion-language/./src/admin/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_inheritsLoose","subClass","superClass","constructor","__proto__","language","emoji","alt","country","className","draggable","loading","src","basename","icon","_assertThisInitialized","self","ReferenceError","_defineProperty","obj","configurable","writable","Language","Model","attribute","apiEndpoint","this","exists","data","id","models","utils","flag","str","length","charCodeAt","push","toString","join","aa","nativeName","ab","ae","af","ak","am","an","ar","as","av","ay","az","ba","be","bg","bh","bi","bm","bn","bo","br","bs","ca","ce","ch","co","cr","cs","cu","cv","cy","da","de","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fj","fo","fr","fy","ga","gd","gl","gn","gu","gv","ha","he","hi","ho","hr","ht","hu","hy","hz","ia","ie","ig","ii","ik","io","is","it","iu","ja","jv","ka","kg","ki","kj","kk","kl","km","kn","ko","kr","ks","ku","kv","kw","ky","la","lb","lg","li","ln","lo","lt","lu","lv","mg","mh","mi","mk","ml","mn","mr","ms","mt","my","na","nb","nd","ne","ng","nl","nn","no","nr","nv","ny","oc","oj","om","or","os","pa","pi","pl","ps","pt","qu","rm","rn","ro","ru","rw","sa","sc","sd","se","sg","si","sk","sl","sm","sn","so","sq","sr","ss","st","su","sv","sw","ta","te","tg","th","ti","tk","tl","tn","to","tr","ts","tt","tw","ty","ug","uk","ur","uz","ve","vi","vo","wa","wo","xh","yi","yo","za","zh","zu","codes","map","code","getName","getNativeName","validate","values","keys","find","toLowerCase","native","ISO6391","sort","a","b","reduce","getCode","countries","indexOf","filter","getCountryEmoji","LanguagesSettingsPage","oninit","vnode","updating","deleting","newLocale","Stream","newCountry","nativeKey","app","settings","showFlagsKey","showFlags","composerLocaleDefaultKey","composerLocaleDefault","localeSortKey","localeSort","content","locales","getLocales","getCountries","Switch","component","state","onchange","val","redraw","sync","translator","trans","Select","options","Button","onclick","add","disabled","adding","store","all","remove","type","isChanged","save","onkeydown","e","preventDefault","createRecord","then","Promise","dirty","saveSettings","onsaved","Number","composerLocale","locale","ExtensionPage","components","_extends","assign","target","arguments","source","apply","commonUtils","initializers","Forum","discussionLanguages","hasMany","extensionData","registerPage","extend","PermissionGrid","items","label","setting","minutes","parseInt","SettingDropdown","defaultLabel","count"],"mappings":"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","file":"admin.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 33);\n","module.exports = flarum.core.compat['common/Model'];","module.exports = flarum.core.compat['common/extend'];","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import basename from 'twemoji-basename';\nimport icon from 'flarum/common/helpers/icon';\n\nexport default (language) => {\n if (!language) return;\n\n const emoji = language.emoji ? language.emoji() : language;\n\n return emoji ? (\n \n ) : (\n icon('fas fa-globe')\n );\n};\n","module.exports = flarum.core.compat['common/components/Button'];","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _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}","import Model from 'flarum/common/Model';\n\nexport default class Language extends Model {\n code = Model.attribute('code');\n country = Model.attribute('country');\n\n name = Model.attribute('name');\n emoji = Model.attribute('emoji');\n\n apiEndpoint() {\n return `/fof/discussion-language${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","module.exports = flarum.core.compat['common/helpers/icon'];","module.exports = flarum.core.compat['common/models/Forum'];","import Language from './Language';\n\nexport const models = {\n Language,\n};\n","import flag from './flag';\n\nexport const utils = {\n flag,\n};\n","/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */\n/* https://github.com/twitter/twemoji/blob/gh-pages/LICENSE */\n\nmodule.exports = function (str) {\n var r = []\n var c = 0\n var p = 0\n var i = 0\n var l = str.length\n\n while (i < l) {\n c = str.charCodeAt(i++)\n if (p) {\n r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16))\n p = 0\n } else if (0xD800 <= c && c <= 0xDBFF) {\n p = c\n } else {\n r.push(c.toString(16))\n }\n }\n\n return r.join('-')\n}\n","module.exports = flarum.core.compat['common/components/Select'];","module.exports = flarum.core.compat['common/components/Switch'];","module.exports = flarum.core.compat['common/utils/Stream'];","module.exports = flarum.core.compat['admin/components/PermissionGrid'];","module.exports = flarum.core.compat['admin/components/SettingDropdown'];","module.exports = flarum.core.compat['admin/components/ExtensionPage'];","module.exports = flarum.core.compat['admin/utils/saveSettings'];","const LANGUAGES_LIST = {\n aa: {\n name: 'Afar',\n nativeName: 'Afaraf',\n },\n ab: {\n name: 'Abkhaz',\n nativeName: 'аҧсуа бызшәа',\n },\n ae: {\n name: 'Avestan',\n nativeName: 'avesta',\n },\n af: {\n name: 'Afrikaans',\n nativeName: 'Afrikaans',\n },\n ak: {\n name: 'Akan',\n nativeName: 'Akan',\n },\n am: {\n name: 'Amharic',\n nativeName: 'አማርኛ',\n },\n an: {\n name: 'Aragonese',\n nativeName: 'aragonés',\n },\n ar: {\n name: 'Arabic',\n nativeName: 'اللغة العربية',\n },\n as: {\n name: 'Assamese',\n nativeName: 'অসমীয়া',\n },\n av: {\n name: 'Avaric',\n nativeName: 'авар мацӀ',\n },\n ay: {\n name: 'Aymara',\n nativeName: 'aymar aru',\n },\n az: {\n name: 'Azerbaijani',\n nativeName: 'azərbaycan dili',\n },\n ba: {\n name: 'Bashkir',\n nativeName: 'башҡорт теле',\n },\n be: {\n name: 'Belarusian',\n nativeName: 'беларуская мова',\n },\n bg: {\n name: 'Bulgarian',\n nativeName: 'български език',\n },\n bh: {\n name: 'Bihari',\n nativeName: 'भोजपुरी',\n },\n bi: {\n name: 'Bislama',\n nativeName: 'Bislama',\n },\n bm: {\n name: 'Bambara',\n nativeName: 'bamanankan',\n },\n bn: {\n name: 'Bengali',\n nativeName: 'বাংলা',\n },\n bo: {\n name: 'Tibetan Standard',\n nativeName: 'བོད་ཡིག',\n },\n br: {\n name: 'Breton',\n nativeName: 'brezhoneg',\n },\n bs: {\n name: 'Bosnian',\n nativeName: 'bosanski jezik',\n },\n ca: {\n name: 'Catalan',\n nativeName: 'Català',\n },\n ce: {\n name: 'Chechen',\n nativeName: 'нохчийн мотт',\n },\n ch: {\n name: 'Chamorro',\n nativeName: 'Chamoru',\n },\n co: {\n name: 'Corsican',\n nativeName: 'corsu',\n },\n cr: {\n name: 'Cree',\n nativeName: 'ᓀᐦᐃᔭᐍᐏᐣ',\n },\n cs: {\n name: 'Czech',\n nativeName: 'čeština',\n },\n cu: {\n name: 'Old Church Slavonic',\n nativeName: 'ѩзыкъ словѣньскъ',\n },\n cv: {\n name: 'Chuvash',\n nativeName: 'чӑваш чӗлхи',\n },\n cy: {\n name: 'Welsh',\n nativeName: 'Cymraeg',\n },\n da: {\n name: 'Danish',\n nativeName: 'dansk',\n },\n de: {\n name: 'German',\n nativeName: 'Deutsch',\n },\n dv: {\n name: 'Divehi',\n nativeName: 'Dhivehi',\n },\n dz: {\n name: 'Dzongkha',\n nativeName: 'རྫོང་ཁ',\n },\n ee: {\n name: 'Ewe',\n nativeName: 'Eʋegbe',\n },\n el: {\n name: 'Greek',\n nativeName: 'Ελληνικά',\n },\n en: {\n name: 'English',\n nativeName: 'English',\n },\n eo: {\n name: 'Esperanto',\n nativeName: 'Esperanto',\n },\n es: {\n name: 'Spanish',\n nativeName: 'Español',\n },\n et: {\n name: 'Estonian',\n nativeName: 'eesti',\n },\n eu: {\n name: 'Basque',\n nativeName: 'euskara',\n },\n fa: {\n name: 'Persian',\n nativeName: 'فارسی',\n },\n ff: {\n name: 'Fula',\n nativeName: 'Fulfulde',\n },\n fi: {\n name: 'Finnish',\n nativeName: 'suomi',\n },\n fj: {\n name: 'Fijian',\n nativeName: 'Vakaviti',\n },\n fo: {\n name: 'Faroese',\n nativeName: 'føroyskt',\n },\n fr: {\n name: 'French',\n nativeName: 'Français',\n },\n fy: {\n name: 'Western Frisian',\n nativeName: 'Frysk',\n },\n ga: {\n name: 'Irish',\n nativeName: 'Gaeilge',\n },\n gd: {\n name: 'Scottish Gaelic',\n nativeName: 'Gàidhlig',\n },\n gl: {\n name: 'Galician',\n nativeName: 'galego',\n },\n gn: {\n name: 'Guaraní',\n nativeName: \"Avañe'ẽ\",\n },\n gu: {\n name: 'Gujarati',\n nativeName: 'ગુજરાતી',\n },\n gv: {\n name: 'Manx',\n nativeName: 'Gaelg',\n },\n ha: {\n name: 'Hausa',\n nativeName: 'هَوُسَ',\n },\n he: {\n name: 'Hebrew',\n nativeName: 'עברית',\n },\n hi: {\n name: 'Hindi',\n nativeName: 'हिन्दी',\n },\n ho: {\n name: 'Hiri Motu',\n nativeName: 'Hiri Motu',\n },\n hr: {\n name: 'Croatian',\n nativeName: 'hrvatski jezik',\n },\n ht: {\n name: 'Haitian',\n nativeName: 'Kreyòl ayisyen',\n },\n hu: {\n name: 'Hungarian',\n nativeName: 'Magyar',\n },\n hy: {\n name: 'Armenian',\n nativeName: 'Հայերեն',\n },\n hz: {\n name: 'Herero',\n nativeName: 'Otjiherero',\n },\n ia: {\n name: 'Interlingua',\n nativeName: 'Interlingua',\n },\n id: {\n name: 'Indonesian',\n nativeName: 'Bahasa Indonesia',\n },\n ie: {\n name: 'Interlingue',\n nativeName: 'Interlingue',\n },\n ig: {\n name: 'Igbo',\n nativeName: 'Asụsụ Igbo',\n },\n ii: {\n name: 'Nuosu',\n nativeName: 'ꆈꌠ꒿ Nuosuhxop',\n },\n ik: {\n name: 'Inupiaq',\n nativeName: 'Iñupiaq',\n },\n io: {\n name: 'Ido',\n nativeName: 'Ido',\n },\n is: {\n name: 'Icelandic',\n nativeName: 'Íslenska',\n },\n it: {\n name: 'Italian',\n nativeName: 'Italiano',\n },\n iu: {\n name: 'Inuktitut',\n nativeName: 'ᐃᓄᒃᑎᑐᑦ',\n },\n ja: {\n name: 'Japanese',\n nativeName: '日本語',\n },\n jv: {\n name: 'Javanese',\n nativeName: 'basa Jawa',\n },\n ka: {\n name: 'Georgian',\n nativeName: 'ქართული',\n },\n kg: {\n name: 'Kongo',\n nativeName: 'Kikongo',\n },\n ki: {\n name: 'Kikuyu',\n nativeName: 'Gĩkũyũ',\n },\n kj: {\n name: 'Kwanyama',\n nativeName: 'Kuanyama',\n },\n kk: {\n name: 'Kazakh',\n nativeName: 'қазақ тілі',\n },\n kl: {\n name: 'Kalaallisut',\n nativeName: 'kalaallisut',\n },\n km: {\n name: 'Khmer',\n nativeName: 'ខេមរភាសា',\n },\n kn: {\n name: 'Kannada',\n nativeName: 'ಕನ್ನಡ',\n },\n ko: {\n name: 'Korean',\n nativeName: '한국어',\n },\n kr: {\n name: 'Kanuri',\n nativeName: 'Kanuri',\n },\n ks: {\n name: 'Kashmiri',\n nativeName: 'कश्मीरी',\n },\n ku: {\n name: 'Kurdish',\n nativeName: 'Kurdî',\n },\n kv: {\n name: 'Komi',\n nativeName: 'коми кыв',\n },\n kw: {\n name: 'Cornish',\n nativeName: 'Kernewek',\n },\n ky: {\n name: 'Kyrgyz',\n nativeName: 'Кыргызча',\n },\n la: {\n name: 'Latin',\n nativeName: 'latine',\n },\n lb: {\n name: 'Luxembourgish',\n nativeName: 'Lëtzebuergesch',\n },\n lg: {\n name: 'Ganda',\n nativeName: 'Luganda',\n },\n li: {\n name: 'Limburgish',\n nativeName: 'Limburgs',\n },\n ln: {\n name: 'Lingala',\n nativeName: 'Lingála',\n },\n lo: {\n name: 'Lao',\n nativeName: 'ພາສາ',\n },\n lt: {\n name: 'Lithuanian',\n nativeName: 'lietuvių kalba',\n },\n lu: {\n name: 'Luba-Katanga',\n nativeName: 'Tshiluba',\n },\n lv: {\n name: 'Latvian',\n nativeName: 'latviešu valoda',\n },\n mg: {\n name: 'Malagasy',\n nativeName: 'fiteny malagasy',\n },\n mh: {\n name: 'Marshallese',\n nativeName: 'Kajin M̧ajeļ',\n },\n mi: {\n name: 'Māori',\n nativeName: 'te reo Māori',\n },\n mk: {\n name: 'Macedonian',\n nativeName: 'македонски јазик',\n },\n ml: {\n name: 'Malayalam',\n nativeName: 'മലയാളം',\n },\n mn: {\n name: 'Mongolian',\n nativeName: 'Монгол хэл',\n },\n mr: {\n name: 'Marathi',\n nativeName: 'मराठी',\n },\n ms: {\n name: 'Malay',\n nativeName: 'Bahasa Malaysia',\n },\n mt: {\n name: 'Maltese',\n nativeName: 'Malti',\n },\n my: {\n name: 'Burmese',\n nativeName: 'ဗမာစာ',\n },\n na: {\n name: 'Nauru',\n nativeName: 'Ekakairũ Naoero',\n },\n nb: {\n name: 'Norwegian Bokmål',\n nativeName: 'Norsk bokmål',\n },\n nd: {\n name: 'Northern Ndebele',\n nativeName: 'isiNdebele',\n },\n ne: {\n name: 'Nepali',\n nativeName: 'नेपाली',\n },\n ng: {\n name: 'Ndonga',\n nativeName: 'Owambo',\n },\n nl: {\n name: 'Dutch',\n nativeName: 'Nederlands',\n },\n nn: {\n name: 'Norwegian Nynorsk',\n nativeName: 'Norsk nynorsk',\n },\n no: {\n name: 'Norwegian',\n nativeName: 'Norsk',\n },\n nr: {\n name: 'Southern Ndebele',\n nativeName: 'isiNdebele',\n },\n nv: {\n name: 'Navajo',\n nativeName: 'Diné bizaad',\n },\n ny: {\n name: 'Chichewa',\n nativeName: 'chiCheŵa',\n },\n oc: {\n name: 'Occitan',\n nativeName: 'occitan',\n },\n oj: {\n name: 'Ojibwe',\n nativeName: 'ᐊᓂᔑᓈᐯᒧᐎᓐ',\n },\n om: {\n name: 'Oromo',\n nativeName: 'Afaan Oromoo',\n },\n or: {\n name: 'Oriya',\n nativeName: 'ଓଡ଼ିଆ',\n },\n os: {\n name: 'Ossetian',\n nativeName: 'ирон æвзаг',\n },\n pa: {\n name: 'Panjabi',\n nativeName: 'ਪੰਜਾਬੀ',\n },\n pi: {\n name: 'Pāli',\n nativeName: 'पाऴि',\n },\n pl: {\n name: 'Polish',\n nativeName: 'język polski',\n },\n ps: {\n name: 'Pashto',\n nativeName: 'پښتو',\n },\n pt: {\n name: 'Portuguese',\n nativeName: 'Português',\n },\n qu: {\n name: 'Quechua',\n nativeName: 'Runa Simi',\n },\n rm: {\n name: 'Romansh',\n nativeName: 'rumantsch grischun',\n },\n rn: {\n name: 'Kirundi',\n nativeName: 'Ikirundi',\n },\n ro: {\n name: 'Romanian',\n nativeName: 'Română',\n },\n ru: {\n name: 'Russian',\n nativeName: 'Русский',\n },\n rw: {\n name: 'Kinyarwanda',\n nativeName: 'Ikinyarwanda',\n },\n sa: {\n name: 'Sanskrit',\n nativeName: 'संस्कृतम्',\n },\n sc: {\n name: 'Sardinian',\n nativeName: 'sardu',\n },\n sd: {\n name: 'Sindhi',\n nativeName: 'सिन्धी',\n },\n se: {\n name: 'Northern Sami',\n nativeName: 'Davvisámegiella',\n },\n sg: {\n name: 'Sango',\n nativeName: 'yângâ tî sängö',\n },\n si: {\n name: 'Sinhala',\n nativeName: 'සිංහල',\n },\n sk: {\n name: 'Slovak',\n nativeName: 'slovenčina',\n },\n sl: {\n name: 'Slovene',\n nativeName: 'slovenski jezik',\n },\n sm: {\n name: 'Samoan',\n nativeName: \"gagana fa'a Samoa\",\n },\n sn: {\n name: 'Shona',\n nativeName: 'chiShona',\n },\n so: {\n name: 'Somali',\n nativeName: 'Soomaaliga',\n },\n sq: {\n name: 'Albanian',\n nativeName: 'Shqip',\n },\n sr: {\n name: 'Serbian',\n nativeName: 'српски језик',\n },\n ss: {\n name: 'Swati',\n nativeName: 'SiSwati',\n },\n st: {\n name: 'Southern Sotho',\n nativeName: 'Sesotho',\n },\n su: {\n name: 'Sundanese',\n nativeName: 'Basa Sunda',\n },\n sv: {\n name: 'Swedish',\n nativeName: 'Svenska',\n },\n sw: {\n name: 'Swahili',\n nativeName: 'Kiswahili',\n },\n ta: {\n name: 'Tamil',\n nativeName: 'தமிழ்',\n },\n te: {\n name: 'Telugu',\n nativeName: 'తెలుగు',\n },\n tg: {\n name: 'Tajik',\n nativeName: 'тоҷикӣ',\n },\n th: {\n name: 'Thai',\n nativeName: 'ไทย',\n },\n ti: {\n name: 'Tigrinya',\n nativeName: 'ትግርኛ',\n },\n tk: {\n name: 'Turkmen',\n nativeName: 'Türkmen',\n },\n tl: {\n name: 'Tagalog',\n nativeName: 'Wikang Tagalog',\n },\n tn: {\n name: 'Tswana',\n nativeName: 'Setswana',\n },\n to: {\n name: 'Tonga',\n nativeName: 'faka Tonga',\n },\n tr: {\n name: 'Turkish',\n nativeName: 'Türkçe',\n },\n ts: {\n name: 'Tsonga',\n nativeName: 'Xitsonga',\n },\n tt: {\n name: 'Tatar',\n nativeName: 'татар теле',\n },\n tw: {\n name: 'Twi',\n nativeName: 'Twi',\n },\n ty: {\n name: 'Tahitian',\n nativeName: 'Reo Tahiti',\n },\n ug: {\n name: 'Uyghur',\n nativeName: 'ئۇيغۇرچە‎',\n },\n uk: {\n name: 'Ukrainian',\n nativeName: 'Українська',\n },\n ur: {\n name: 'Urdu',\n nativeName: 'اردو',\n },\n uz: {\n name: 'Uzbek',\n nativeName: 'Ўзбек',\n },\n ve: {\n name: 'Venda',\n nativeName: 'Tshivenḓa',\n },\n vi: {\n name: 'Vietnamese',\n nativeName: 'Tiếng Việt',\n },\n vo: {\n name: 'Volapük',\n nativeName: 'Volapük',\n },\n wa: {\n name: 'Walloon',\n nativeName: 'walon',\n },\n wo: {\n name: 'Wolof',\n nativeName: 'Wollof',\n },\n xh: {\n name: 'Xhosa',\n nativeName: 'isiXhosa',\n },\n yi: {\n name: 'Yiddish',\n nativeName: 'ייִדיש',\n },\n yo: {\n name: 'Yoruba',\n nativeName: 'Yorùbá',\n },\n za: {\n name: 'Zhuang',\n nativeName: 'Saɯ cueŋƅ',\n },\n zh: {\n name: 'Chinese',\n nativeName: '中文',\n },\n zu: {\n name: 'Zulu',\n nativeName: 'isiZulu',\n },\n};\n\nexport default LANGUAGES_LIST;\n","import LANGUAGES_LIST from './data';\n\nexport default class ISO6391 {\n static getLanguages(codes = []) {\n return codes.map(code => ({\n code,\n name: ISO6391.getName(code),\n nativeName: ISO6391.getNativeName(code),\n }));\n }\n\n static getName(code) {\n return ISO6391.validate(code) ? LANGUAGES_LIST[code].name : '';\n }\n\n static getAllNames() {\n return Object.values(LANGUAGES_LIST).map(l => l.name);\n }\n\n static getNativeName(code) {\n return ISO6391.validate(code) ? LANGUAGES_LIST[code].nativeName : '';\n }\n\n static getAllNativeNames() {\n return Object.values(LANGUAGES_LIST).map(l => l.nativeName);\n }\n\n static getCode(name) {\n const code = Object.keys(LANGUAGES_LIST).find(code => {\n const language = LANGUAGES_LIST[code];\n\n return (\n language.name.toLowerCase() === name.toLowerCase() ||\n language.nativeName.toLowerCase() === name.toLowerCase()\n );\n });\n return code || '';\n }\n\n static getAllCodes() {\n return Object.keys(LANGUAGES_LIST);\n }\n\n static validate(code) {\n return LANGUAGES_LIST.hasOwnProperty(code);\n }\n}\n","import ISO6391 from 'iso-639-1';\n\nexport default (native) =>\n ISO6391[native ? 'getAllNativeNames' : 'getAllNames']()\n .sort((a, b) => a > b)\n .reduce((o, name) => {\n o[ISO6391.getCode(name)] = name;\n\n return o;\n }, {});\n\nexport const getName = (code, native) => ISO6391[native ? 'getNativeName' : 'getName'](code);\n","import countries from '../../common/generated/countries.json';\n\nconst data = Object.values(countries);\n\nexport default (native) => {\n const key = native ? 'native' : 'name';\n\n return data\n .map((c) => c[key])\n .sort((a, b) => a > b)\n .reduce((o, name) => {\n const i = data.indexOf(data.filter((c) => c[key] === name)[0]);\n\n o[Object.keys(countries)[i]] = name;\n\n return o;\n }, {});\n};\n\nexport const getCountryEmoji = (code) => {\n const country = countries[code];\n\n return country && country.emoji;\n};\n","import ExtensionPage from 'flarum/admin/components/ExtensionPage';\nimport Button from 'flarum/common/components/Button';\nimport Select from 'flarum/common/components/Select';\nimport Switch from 'flarum/common/components/Switch';\nimport icon from 'flarum/common/helpers/icon';\nimport saveSettings from 'flarum/admin/utils/saveSettings';\nimport Stream from 'flarum/common/utils/Stream';\nimport getLocales from '../utils/locales';\nimport { default as getCountries, getCountryEmoji } from '../utils/countries';\nimport flag from '../../common/utils/flag';\n\nexport default class LanguagesSettingsPage extends ExtensionPage {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.updating = {};\n this.deleting = {};\n\n this.codes = {};\n this.countries = {};\n\n this.newLocale = Stream('');\n this.newCountry = Stream('');\n\n this.nativeKey = 'fof-discussion-language.native';\n this.native = app.data.settings[this.nativeKey];\n\n this.showFlagsKey = 'fof-discussion-language.showFlags';\n this.showFlags = app.data.settings[this.showFlagsKey];\n\n this.composerLocaleDefaultKey = 'fof-discussion-language.composerLocaleDefault';\n this.composerLocaleDefault = app.data.settings[this.composerLocaleDefaultKey] || 0;\n\n this.localeSortKey = 'fof-discussion-language.filter_language_on_http_request';\n this.localeSort = app.data.settings[this.localeSortKey];\n }\n\n content() {\n const locales = getLocales(this.native);\n const countries = getCountries(this.native);\n\n return [\n
\n
\n
\n {Switch.component(\n {\n state: this.native,\n onchange: (val) => {\n this.native = val;\n m.redraw.sync();\n },\n },\n app.translator.trans('fof-discussion-language.admin.settings.native_label')\n )}\n
\n\n
\n {Switch.component(\n {\n state: this.showFlags,\n onchange: (val) => (this.showFlags = val),\n },\n app.translator.trans('fof-discussion-language.admin.settings.show_flag_label')\n )}\n
\n\n
\n {Switch.component(\n {\n state: this.composerLocaleDefault,\n onchange: (val) => (this.composerLocaleDefault = val),\n },\n app.translator.trans('fof-discussion-language.admin.settings.composer_default_label')\n )}\n
\n\n
\n {Switch.component(\n {\n state: this.localeSort,\n onchange: (value) => (this.localeSort = value),\n },\n app.translator.trans('fof-discussion-language.admin.settings.locale_sort_label')\n )}\n
\n\n
\n\n
\n {Select.component({\n onchange: this.newLocale,\n value: this.newLocale(),\n options: locales,\n })}\n\n {Select.component({\n onchange: this.newCountry,\n value: this.newCountry(),\n options: countries,\n })}\n\n {flag(getCountryEmoji(this.newCountry()))}\n\n {Button.component(\n {\n className: 'Button Button--primary',\n onclick: this.add.bind(this),\n disabled: !this.newLocale() || !this.newCountry() || this.adding,\n },\n icon(this.adding ? 'fas fa-spinner fa-spin' : 'fas fa-plus')\n )}\n
\n\n
\n {app.store.all('discussion-languages').map((language) => {\n const id = language.id();\n const updating = this.updating[id];\n const deleting = this.deleting[id];\n\n const country = this.countries[id] || language.country();\n\n return (\n
\n {Select.component({\n onchange: (val) => (this.codes[id] = val),\n value: this.codes[id] || language.code(),\n options: locales,\n disabled: updating || deleting,\n })}\n\n {Select.component({\n onchange: (val) => (this.countries[id] = val),\n value: country,\n options: countries,\n disabled: updating || deleting,\n })}\n\n {flag(getCountryEmoji(country))}\n\n {Button.component(\n {\n className: `Button Button--danger`,\n disabled: deleting,\n onclick: this.remove.bind(this, language),\n },\n icon(deleting ? 'fas fa-spinner fa-spin' : 'fas fa-times')\n )}\n
\n );\n })}\n
\n\n
\n \n {app.translator.trans('core.admin.settings.submit_button')}\n \n
\n
\n
,\n ];\n }\n\n onkeydown(e) {\n if (e.key === 'Enter') {\n this.add();\n e.preventDefault();\n }\n }\n\n add() {\n if (this.adding || !this.newLocale()) return;\n\n this.adding = true;\n\n const code = this.newLocale();\n const country = this.newCountry();\n const language = app.store.createRecord('discussion-languages');\n\n language\n .save({ code, country })\n .then(() => {\n this.newLocale('');\n\n this.adding = false;\n\n m.redraw();\n })\n .catch(() => (this.adding = false));\n }\n\n save(e) {\n e.preventDefault();\n\n this.loading = true;\n\n Promise.all([\n ...this.dirty().map((language) => {\n const id = language.id();\n\n this.updating[id] = true;\n\n return language\n .save({ code: this.codes[id], country: this.countries[id] })\n .then(\n () => {},\n () => {}\n )\n .then(() => {\n this.updating[id] = false;\n });\n }),\n saveSettings({\n [this.nativeKey]: this.native,\n [this.showFlagsKey]: this.showFlags,\n [this.composerLocaleDefaultKey]: this.composerLocaleDefault,\n [this.localeSortKey]: this.localeSort,\n }).then(this.onsaved.bind(this)),\n ]);\n }\n\n remove(language) {\n this.deleting[language.id()] = true;\n\n language\n .delete()\n .then(\n () => {},\n () => {}\n )\n .then(() => {\n delete this.deleting[language.id()];\n m.redraw();\n });\n }\n\n dirty() {\n return app.store.all('discussion-languages').filter((l) => {\n const id = l.id();\n\n return (this.codes[id] && this.codes[id] !== l.code()) || (this.countries[id] && this.countries[id] !== l.country());\n });\n }\n\n isChanged() {\n const dirty = this.dirty().length;\n const native = Number(this.native) !== Number(app.data.settings[this.nativeKey] || 0);\n const flag = Number(this.showFlags) !== Number(app.data.settings[this.showFlagsKey] || 0);\n const composerLocale = Number(this.composerLocaleDefault) !== Number(app.data.settings[this.composerLocaleDefaultKey] || 0);\n const locale = Number(this.localeSort) !== Number(app.data.settings[this.localeSortKey] || 0);\n\n return dirty || native || flag || composerLocale || locale;\n }\n}\n","import LanguagesSettingsPage from './LanguagesSettingsPage';\n\nexport const components = {\n LanguagesSettingsPage,\n};\n","export default function _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}","import countries, { getCountryEmoji } from './countries';\nimport locales, { getName } from './locales';\nimport { utils as commonUtils } from '../../common/utils';\n\nexport const utils = {\n countries,\n getCountryEmoji,\n locales,\n getName,\n ...commonUtils,\n};\n","import { extend } from 'flarum/common/extend';\nimport Forum from 'flarum/common/models/Forum';\nimport PermissionGrid from 'flarum/admin/components/PermissionGrid';\nimport SettingDropdown from 'flarum/admin/components/SettingDropdown';\n\nimport LanguagesSettingsPage from './components/LanguagesSettingsPage';\nimport Language from '../common/models/Language';\n\nexport * from './components';\nexport * from './utils';\nexport * from '../common/models';\n\napp.initializers.add('fof/discussion-language', () => {\n app.store.models['discussion-languages'] = Language;\n\n Forum.prototype.discussionLanguages = Forum.hasMany('discussionLanguages');\n\n app.extensionData.for('fof-discussion-language').registerPage(LanguagesSettingsPage);\n\n // This extend must remain for now, as the new admin UI in beta 15 does not currently support the custom dropdown\n extend(PermissionGrid.prototype, 'startItems', (items) => {\n items.add(\n 'allowLanguageChange',\n {\n icon: 'fas fa-globe',\n label: app.translator.trans('fof-discussion-language.admin.permissions.allow_change_language_label'),\n setting: () => {\n const minutes = parseInt(app.data.settings['fof-discussion-language.allow_tag_change'], 10);\n\n return SettingDropdown.component({\n defaultLabel: minutes\n ? app.translator.trans('core.admin.permissions_controls.allow_some_minutes_button', minutes, { count: minutes })\n : app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button'),\n key: 'fof-discussion-language.allow_language_change',\n options: [\n { value: '-1', label: app.translator.trans('core.admin.permissions_controls.allow_indefinitely_button') },\n { value: '10', label: app.translator.trans('core.admin.permissions_controls.allow_ten_minutes_button') },\n { value: 'reply', label: app.translator.trans('core.admin.permissions_controls.allow_until_reply_button') },\n ],\n });\n },\n },\n 90\n );\n });\n});\n"],"sourceRoot":""} \ No newline at end of file diff --git a/js/dist/forum.js b/js/dist/forum.js index 429a2da..52e5f81 100644 --- a/js/dist/forum.js +++ b/js/dist/forum.js @@ -1,4 +1,4 @@ -module.exports=function(t){var n={};function e(a){if(n[a])return n[a].exports;var o=n[a]={i:a,l:!1,exports:{}};return t[a].call(o.exports,o,o.exports,e),o.l=!0,o.exports}return e.m=t,e.c=n,e.d=function(t,n,a){e.o(t,n)||Object.defineProperty(t,n,{enumerable:!0,get:a})},e.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},e.t=function(t,n){if(1&n&&(t=e(t)),8&n)return t;if(4&n&&"object"==typeof t&&t&&t.__esModule)return t;var a=Object.create(null);if(e.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:t}),2&n&&"string"!=typeof t)for(var o in t)e.d(a,o,function(n){return t[n]}.bind(null,o));return a},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},e.p="",e(e.s=33)}([function(t,n){t.exports=flarum.core.compat["common/Model"]},function(t,n){t.exports=flarum.core.compat["common/extend"]},function(t,n,e){"use strict";function a(t,n){t.prototype=Object.create(n.prototype),t.prototype.constructor=t,t.__proto__=n}e.d(n,"a",(function(){return a}))},function(t,n,e){"use strict";var a=e(10),o=e.n(a),s=e(6),r=e.n(s);n.a=function(t){if(t){var n=t.emoji?t.emoji():t;return n?m("img",{alt:t.country&&t.country()||"",className:"emoji",draggable:"false",loading:"lazy",src:"//cdn.jsdelivr.net/gh/twitter/twemoji@13/assets/72x72/"+o()(n)+".png"}):r()("fas fa-globe")}}},function(t,n){t.exports=flarum.core.compat["common/components/Button"]},function(t,n,e){"use strict";function a(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}e.d(n,"a",(function(){return u}));var o=e(2);function s(t,n,e){return n in t?Object.defineProperty(t,n,{value:e,enumerable:!0,configurable:!0,writable:!0}):t[n]=e,t}var r=e(0),i=e.n(r),u=function(t){function n(){for(var n,e=arguments.length,o=new Array(e),r=0;rn.code().toLowerCase()},B=e(22),M=e.n(B),P=e(23),F=e.n(P),I=e(24),A=e.n(I),q=e(25),R=e.n(q),T=e(26),z=e.n(T),E=e(27),G=e.n(E),H=function(t){function n(){return t.apply(this,arguments)||this}Object(h.a)(n,t);var e=n.prototype;return e.oninit=function(n){t.prototype.oninit.call(this,n),this.languages=app.store.all("discussion-languages"),this.options=this.languages.reduce((function(t,n){return t[n.code()]=m(L,{language:n}),t}),this.attrs.extra||{})},e.view=function(){var t=this,n=this.attrs.selected;return G.a.component({buttonClassName:"Button",label:this.options[n]||this.options[this.attrs.default]},Object.keys(this.options).map((function(e){var a=e===(n||"any");return d.a.component({active:a,icon:!a||"fas fa-check",onclick:function(){return t.attrs.onclick(e)}},t.options[e])})))},n}(O.a),U=function(t){var n=this.attrs.discussion.language();n&&t.add("discussion-language",m("span",null,Object(_.a)(n)||m("i",{className:"fas fa-globe"}),m("code",null,n.name())),5)},W={Language:L,LanguageDiscussionModal:w,LanguageDropdown:H},$=e(9),J=e(8);app.initializers.add("fof/discussion-language",(function(){app.store.models["discussion-languages"]=c.a,r.a.prototype.discussionLanguages=o.a.hasMany("discussionLanguages"),u.a.prototype.language=o.a.hasOne("language"),u.a.prototype.canChangeLanguage=o.a.attribute("canChangeLanguage"),Object(l.extend)(f.a,"moderationControls",(function(t,n){n.canChangeLanguage()&&t.add("language",d.a.component({icon:"fas fa-globe",onclick:function(){return app.modal.show(w,{discussion:n})}},app.translator.trans("fof-discussion-language.forum.discussion_controls.change_language_button")))})),Object(l.extend)(C.a.prototype,"newDiscussionAction",(function(t){var n=app.search.params().language;if(n)t.then((function(t){return t.fields.language=app.store.getBy("discussion-languages","code",n)}));else{var e=app.forum.attribute("fof-discussion-language.composerLocaleDefault");app.composer.fields.language=e?app.store.getBy("discussion-languages","code",app.translator.locale):""}})),k.a.prototype.chooseLanguage=function(t,n){var e=this;app.modal.show(w,{selected:this.composer.fields.language,hideSubmitButton:t,onsubmit:function(t){e.composer.fields.language=t,e.$("textarea").focus(),n&&n()}})},Object(l.extend)(k.a.prototype,"headerItems",(function(t){t.add("language",m("a",{className:"DiscussionComposer-changeTags",onclick:this.chooseLanguage.bind(this,!0,null)},m("span",{className:"LanguageLabel "+(this.composer.fields.language?"":"none")},this.composer.fields.language?L.component({language:this.composer.fields.language,uppercase:!0}):app.translator.trans("fof-discussion-language.forum.composer_discussion.choose_language_link"))),20)})),Object(l.override)(k.a.prototype,"onsubmit",(function(t){if(!this.composer.fields.language)return this.chooseLanguage(!0,t);t()})),Object(l.extend)(k.a.prototype,"data",(function(t){t.relationships=t.relationships||{},t.relationships.language=this.composer.fields.language||app.store.all("discussion-languages").sort(N)[0]})),Object(l.extend)(A.a.prototype,"infoItems",U),Object(l.extend)(M.a.prototype,"items",U),Object(l.extend)(F.a.prototype,"requestParams",(function(t){t.include.push("language"),app.search.params().language&&(t.filter.q=(t.filter.q||"")+" language:"+app.search.params().language)})),Object(l.extend)(R.a.prototype,"stickyParams",(function(t){return t.language=m.route.param("language")})),Object(l.extend)(C.a.prototype,"viewItems",(function(t){t.add("language",H.component({extra:{any:app.translator.trans("fof-discussion-language.forum.index_language.any")},default:"any",onclick:function(t){var n=app.search.params();"any"===t?delete n.language:n.language=t,z()(app.route(app.current.get("routeName"),n))},selected:app.search.params().language}))}))}))}]); +t.exports=function(t){for(var n=[],e=0,o=0,a=0,s=t.length;an.code().toLowerCase()},P=e(23),F=e.n(P),I=e(24),A=e.n(I),q=e(25),R=e.n(q),T=e(26),z=e.n(T),E=e(27),G=e.n(E),H=e(28),U=e.n(H),W=function(t){function n(){return t.apply(this,arguments)||this}Object(h.a)(n,t);var e=n.prototype;return e.oninit=function(n){t.prototype.oninit.call(this,n),this.languages=app.store.all("discussion-languages"),this.options=this.languages.reduce((function(t,n){return t[n.code()]=m(L,{language:n}),t}),this.attrs.extra||{})},e.view=function(){var t=this,n=this.attrs.selected;return U.a.component({buttonClassName:"Button",label:this.options[n]||this.options[this.attrs.default]},Object.keys(this.options).map((function(e){var o=e===(n||"any");return d.a.component({active:o,icon:!o||"fas fa-check",onclick:function(){return t.attrs.onclick(e)}},t.options[e])})))},n}(O.a),$=function(t){var n=this.attrs.discussion.language();n&&t.add("discussion-language",m("span",null,Object(_.a)(n)||m("i",{className:"fas fa-globe"}),m("code",null,n.name())),5)},J={Language:L,LanguageDiscussionModal:w,LanguageDropdown:W},K=e(10),Q=e(9);app.initializers.add("fof/discussion-language",(function(){app.store.models["discussion-languages"]=c.a,r.a.prototype.discussionLanguages=a.a.hasMany("discussionLanguages"),u.a.prototype.language=a.a.hasOne("language"),u.a.prototype.canChangeLanguage=a.a.attribute("canChangeLanguage"),Object(l.extend)(f.a,"moderationControls",(function(t,n){n.canChangeLanguage()&&t.add("language",d.a.component({icon:"fas fa-globe",onclick:function(){return app.modal.show(w,{discussion:n})}},app.translator.trans("fof-discussion-language.forum.discussion_controls.change_language_button")))})),Object(l.extend)(k.a.prototype,"newDiscussionAction",(function(t){var n=C.a.search.params().language;if(n)t.then((function(t){return t.fields.language=C.a.store.getBy("discussion-languages","code",n)}));else{var e=C.a.forum.attribute("fof-discussion-language.composerLocaleDefault");C.a.composer.fields.language=e?C.a.store.getBy("discussion-languages","code",C.a.translator.formatter.locale):""}})),B.a.prototype.chooseLanguage=function(t,n){var e=this;C.a.modal.show(w,{selected:this.composer.fields.language,hideSubmitButton:t,onsubmit:function(t){e.composer.fields.language=t,e.$("textarea").focus(),n&&n()}})},Object(l.extend)(B.a.prototype,"headerItems",(function(t){t.add("language",m("a",{className:"DiscussionComposer-changeTags",onclick:this.chooseLanguage.bind(this,!0,null)},m("span",{className:"LanguageLabel "+(this.composer.fields.language?"":"none")},this.composer.fields.language?L.component({language:this.composer.fields.language,uppercase:!0}):C.a.translator.trans("fof-discussion-language.forum.composer_discussion.choose_language_link"))),20)})),Object(l.override)(B.a.prototype,"onsubmit",(function(t){if(!this.composer.fields.language)return this.chooseLanguage(!0,t);t()})),Object(l.extend)(B.a.prototype,"data",(function(t){t.relationships=t.relationships||{},t.relationships.language=this.composer.fields.language||C.a.store.all("discussion-languages").sort(M)[0]})),Object(l.extend)(R.a.prototype,"infoItems",$),Object(l.extend)(F.a.prototype,"items",$),Object(l.extend)(A.a.prototype,"requestParams",(function(t){t.include.push("language"),app.search.params().language&&(t.filter.q=(t.filter.q||"")+" language:"+app.search.params().language)})),Object(l.extend)(z.a.prototype,"stickyParams",(function(t){return t.language=m.route.param("language")})),Object(l.extend)(k.a.prototype,"viewItems",(function(t){t.add("language",W.component({extra:{any:app.translator.trans("fof-discussion-language.forum.index_language.any")},default:"any",onclick:function(t){var n=app.search.params();"any"===t?delete n.language:n.language=t,G()(app.route(app.current.get("routeName"),n))},selected:app.search.params().language}))}))}))}]); //# sourceMappingURL=forum.js.map \ No newline at end of file diff --git a/js/dist/forum.js.map b/js/dist/forum.js.map index 1d4fdb9..1a92b9f 100644 --- a/js/dist/forum.js.map +++ b/js/dist/forum.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://@fof/discussion-language/webpack/bootstrap","webpack://@fof/discussion-language/external \"flarum.core.compat['common/Model']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/extend']\"","webpack://@fof/discussion-language/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/discussion-language/./src/common/utils/flag.js","webpack://@fof/discussion-language/external \"flarum.core.compat['common/components/Button']\"","webpack://@fof/discussion-language/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@fof/discussion-language/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@fof/discussion-language/./src/common/models/Language.js","webpack://@fof/discussion-language/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/models/Forum']\"","webpack://@fof/discussion-language/./src/common/models/index.js","webpack://@fof/discussion-language/./src/common/utils/index.js","webpack://@fof/discussion-language/./node_modules/twemoji-basename/index.js","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/components/DiscussionComposer']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/Component']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/models/Discussion']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/components/DiscussionHero']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/states/GlobalSearchState']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/utils/setRouteWithForcedRefresh']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/components/Dropdown']\"","webpack://@fof/discussion-language/./src/forum/components/Language.js","webpack://@fof/discussion-language/./src/forum/components/LanguageDiscussionModal.js","webpack://@fof/discussion-language/./src/forum/addLanguageComposer.js","webpack://@fof/discussion-language/./src/forum/components/LanguageDropdown.js","webpack://@fof/discussion-language/./src/forum/addLanguageToDiscussionList.js","webpack://@fof/discussion-language/./src/forum/components/index.js","webpack://@fof/discussion-language/./src/forum/index.js","webpack://@fof/discussion-language/./src/forum/addEditLanguageModal.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_inheritsLoose","subClass","superClass","constructor","__proto__","language","emoji","alt","country","className","draggable","loading","src","basename","icon","_assertThisInitialized","self","ReferenceError","_defineProperty","obj","configurable","writable","Language","Model","attribute","apiEndpoint","this","exists","data","id","models","utils","flag","str","length","charCodeAt","push","toString","join","oninit","vnode","languages","app","store","all","options","reduce","lang","code","attrs","extra","view","uppercase","toUpperCase","Component","LanguageDiscussionModal","current","selected","discussion","title","translator","trans","content","map","onclick","select","hideSubmitButton","Button","component","type","disabled","onsubmit","redraw","e","preventDefault","hide","save","relationships","then","DiscussionPage","stream","update","loaded","Modal","sort","a","b","toLowerCase","LanguageDropdown","Dropdown","buttonClassName","label","keys","active","addLanguage","items","add","components","initializers","Forum","discussionLanguages","hasMany","Discussion","hasOne","canChangeLanguage","extend","DiscussionControls","modal","show","IndexPage","promise","dislang","search","params","composer","fields","getBy","localeComposer","forum","locale","DiscussionComposer","chooseLanguage","callback","$","focus","override","original","DiscussionListItem","DiscussionHero","DiscussionListState","include","filter","q","GlobalSearchState","route","param","any","default","setRouteWithForcedRefresh"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 33);\n","module.exports = flarum.core.compat['common/Model'];","module.exports = flarum.core.compat['common/extend'];","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import basename from 'twemoji-basename';\nimport icon from 'flarum/common/helpers/icon';\n\nexport default (language) => {\n if (!language) return;\n\n const emoji = language.emoji ? language.emoji() : language;\n\n return emoji ? (\n \n ) : (\n icon('fas fa-globe')\n );\n};\n","module.exports = flarum.core.compat['common/components/Button'];","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _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}","import Model from 'flarum/common/Model';\n\nexport default class Language extends Model {\n code = Model.attribute('code');\n country = Model.attribute('country');\n\n name = Model.attribute('name');\n emoji = Model.attribute('emoji');\n\n apiEndpoint() {\n return `/fof/discussion-language${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","module.exports = flarum.core.compat['common/helpers/icon'];","module.exports = flarum.core.compat['common/models/Forum'];","import Language from './Language';\n\nexport const models = {\n Language,\n};\n","import flag from './flag';\n\nexport const utils = {\n flag,\n};\n","/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */\n/* https://github.com/twitter/twemoji/blob/gh-pages/LICENSE */\n\nmodule.exports = function (str) {\n var r = []\n var c = 0\n var p = 0\n var i = 0\n var l = str.length\n\n while (i < l) {\n c = str.charCodeAt(i++)\n if (p) {\n r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16))\n p = 0\n } else if (0xD800 <= c && c <= 0xDBFF) {\n p = c\n } else {\n r.push(c.toString(16))\n }\n }\n\n return r.join('-')\n}\n","module.exports = flarum.core.compat['forum/components/DiscussionComposer'];","module.exports = flarum.core.compat['common/Component'];","module.exports = flarum.core.compat['forum/components/IndexPage'];","module.exports = flarum.core.compat['common/models/Discussion'];","module.exports = flarum.core.compat['forum/utils/DiscussionControls'];","module.exports = flarum.core.compat['common/components/Modal'];","module.exports = flarum.core.compat['forum/components/DiscussionPage'];","module.exports = flarum.core.compat['forum/components/DiscussionHero'];","module.exports = flarum.core.compat['forum/states/DiscussionListState'];","module.exports = flarum.core.compat['forum/components/DiscussionListItem'];","module.exports = flarum.core.compat['forum/states/GlobalSearchState'];","module.exports = flarum.core.compat['common/utils/setRouteWithForcedRefresh'];","module.exports = flarum.core.compat['common/components/Dropdown'];","import Component from 'flarum/common/Component';\n\nimport flag from '../../common/utils/flag';\n\nexport default class Language extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.languages = app.store.all('discussion-languages');\n this.options = this.languages.reduce((o, lang) => {\n o[lang.code()] = (\n \n {flag(lang)} {lang.name()}\n \n );\n\n return o;\n }, this.attrs.extra || {});\n }\n\n view() {\n const { language, uppercase } = this.attrs;\n const name = language.name() || '';\n\n return (\n \n {flag(language)}\n  \n {uppercase ? name.toUpperCase() : name}\n \n );\n }\n}\n","import Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\n\nimport Language from './Language';\n\nexport default class LanguageDiscussionModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.languages = app.store.all('discussion-languages');\n\n this.current = this.attrs.selected || (this.attrs.discussion && this.attrs.discussion.language());\n this.selected = this.current;\n }\n\n className() {\n return 'FoFLanguageDiscussionModal';\n }\n\n title() {\n return this.attrs.discussion\n ? app.translator.trans('fof-discussion-language.forum.change_language.edit_title', { title: {this.attrs.discussion.title()} })\n : app.translator.trans('fof-discussion-language.forum.change_language.title');\n }\n\n content() {\n return [\n
\n
\n {this.languages.map((language) => (\n \n \n \n ))}\n
\n\n {!this.attrs.hideSubmitButton && (\n
\n {Button.component(\n {\n type: 'submit',\n className: 'Button Button--primary',\n disabled: !this.selected || this.selected === this.current,\n loading: this.loading,\n icon: 'fas fa-check',\n },\n app.translator.trans('fof-discussion-language.forum.change_language.submit_button')\n )}\n
\n )}\n
,\n ];\n }\n\n select(language) {\n this.selected = language;\n\n if (this.attrs.hideSubmitButton) return this.onsubmit();\n\n m.redraw();\n }\n\n onsubmit(e) {\n if (e) e.preventDefault();\n\n const { discussion, onsubmit } = this.attrs;\n\n this.loading = true;\n\n if (!discussion) {\n this.hide();\n\n if (onsubmit) onsubmit(this.selected);\n\n return;\n }\n\n const language = this.selected;\n\n discussion\n .save({ relationships: { language } })\n .then(() => {\n if (app.current instanceof DiscussionPage) {\n app.current.stream.update();\n }\n\n return this.hide();\n })\n .catch(this.loaded.bind(this));\n }\n}\n","import { extend, override } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\n\nimport LanguageDiscussionModal from './components/LanguageDiscussionModal';\nimport Language from './components/Language';\n\nconst sort = (a, b) => a.code().toLowerCase() > b.code().toLowerCase();\n\nexport default () => {\n extend(IndexPage.prototype, 'newDiscussionAction', function (promise) {\n const dislang = app.search.params().language;\n\n if (dislang) {\n promise.then((composer) => (composer.fields.language = app.store.getBy('discussion-languages', 'code', dislang)));\n } else {\n const localeComposer = app.forum.attribute('fof-discussion-language.composerLocaleDefault');\n app.composer.fields.language = localeComposer ? app.store.getBy('discussion-languages', 'code', app.translator.locale) : '';\n }\n });\n\n DiscussionComposer.prototype.chooseLanguage = function (hide, callback) {\n app.modal.show(LanguageDiscussionModal, {\n selected: this.composer.fields.language,\n hideSubmitButton: hide,\n onsubmit: (language) => {\n this.composer.fields.language = language;\n this.$('textarea').focus();\n\n if (callback) callback();\n },\n });\n };\n\n extend(DiscussionComposer.prototype, 'headerItems', function (items) {\n items.add(\n 'language',\n \n \n {this.composer.fields.language\n ? Language.component({ language: this.composer.fields.language, uppercase: true })\n : app.translator.trans('fof-discussion-language.forum.composer_discussion.choose_language_link')}\n \n ,\n 20\n );\n });\n\n override(DiscussionComposer.prototype, 'onsubmit', function (original) {\n if (!this.composer.fields.language) return this.chooseLanguage(true, original);\n\n original();\n });\n\n extend(DiscussionComposer.prototype, 'data', function (data) {\n data.relationships = data.relationships || {};\n\n data.relationships.language = this.composer.fields.language || app.store.all('discussion-languages').sort(sort)[0];\n });\n};\n","import Component from 'flarum/common/Component';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport Button from 'flarum/common/components/Button';\n\nimport Language from './Language';\n\nexport default class LanguageDropdown extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.languages = app.store.all('discussion-languages');\n this.options = this.languages.reduce((o, lang) => {\n o[lang.code()] = ;\n\n return o;\n }, this.attrs.extra || {});\n }\n\n view() {\n const selected = this.attrs.selected;\n\n return Dropdown.component(\n {\n buttonClassName: 'Button',\n label: this.options[selected] || this.options[this.attrs.default],\n },\n Object.keys(this.options).map((key) => {\n const isSelected = selected || 'any';\n const active = key === isSelected;\n\n return Button.component(\n {\n active,\n icon: active ? 'fas fa-check' : true,\n onclick: () => this.attrs.onclick(key),\n },\n this.options[key]\n );\n })\n );\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionHero from 'flarum/forum/components/DiscussionHero';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport GlobalSearchState from 'flarum/forum/states/GlobalSearchState';\nimport setRouteWithForcedRefresh from 'flarum/common/utils/setRouteWithForcedRefresh';\n\nimport flag from '../common/utils/flag';\nimport LanguageDropdown from './components/LanguageDropdown';\n\nconst addLanguage = function (items) {\n const language = this.attrs.discussion.language();\n\n if (!language) return;\n\n items.add(\n 'discussion-language',\n \n {flag(language) || }\n {language.name()}\n ,\n 5\n );\n};\n\nexport default () => {\n extend(DiscussionListItem.prototype, 'infoItems', addLanguage);\n extend(DiscussionHero.prototype, 'items', addLanguage);\n\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n params.include.push('language');\n\n if (app.search.params().language) {\n params.filter.q = (params.filter.q || '') + ' language:' + app.search.params().language;\n }\n });\n\n extend(GlobalSearchState.prototype, 'stickyParams', (params) => (params.language = m.route.param('language')));\n\n extend(IndexPage.prototype, 'viewItems', function (items) {\n items.add(\n 'language',\n LanguageDropdown.component({\n extra: { any: app.translator.trans('fof-discussion-language.forum.index_language.any') },\n default: 'any',\n onclick: (key) => {\n const params = app.search.params();\n\n if (key === 'any') delete params.language;\n else params.language = key;\n\n setRouteWithForcedRefresh(app.route(app.current.get('routeName'), params));\n },\n selected: app.search.params().language,\n })\n );\n });\n};\n","import Language from './Language';\nimport LanguageDiscussionModal from './LanguageDiscussionModal';\nimport LanguageDropdown from './LanguageDropdown';\n\nexport const components = {\n Language,\n LanguageDiscussionModal,\n LanguageDropdown,\n};\n","import Model from 'flarum/common/Model';\nimport Forum from 'flarum/common/models/Forum';\nimport Discussion from 'flarum/common/models/Discussion';\n\nimport Language from '../common/models/Language';\n\nimport addEditLanguageModal from './addEditLanguageModal';\nimport addLanguageComposer from './addLanguageComposer';\nimport addLanguageToDiscussionList from './addLanguageToDiscussionList';\n\nexport * from './components';\nexport * from '../common/utils';\nexport * from '../common/models';\n\napp.initializers.add('fof/discussion-language', () => {\n app.store.models['discussion-languages'] = Language;\n\n Forum.prototype.discussionLanguages = Model.hasMany('discussionLanguages');\n Discussion.prototype.language = Model.hasOne('language');\n Discussion.prototype.canChangeLanguage = Model.attribute('canChangeLanguage');\n\n addEditLanguageModal();\n addLanguageComposer();\n addLanguageToDiscussionList();\n});\n","import { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport Button from 'flarum/common/components/Button';\n\nimport LanguageDiscussionModal from './components/LanguageDiscussionModal';\n\nexport default () => {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canChangeLanguage()) {\n items.add(\n 'language',\n Button.component(\n {\n icon: 'fas fa-globe',\n onclick: () => app.modal.show(LanguageDiscussionModal, { discussion }),\n },\n app.translator.trans('fof-discussion-language.forum.discussion_controls.change_language_button')\n )\n );\n }\n });\n};\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://@fof/discussion-language/webpack/bootstrap","webpack://@fof/discussion-language/external \"flarum.core.compat['common/Model']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/extend']\"","webpack://@fof/discussion-language/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@fof/discussion-language/./src/common/utils/flag.js","webpack://@fof/discussion-language/external \"flarum.core.compat['common/components/Button']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/app']\"","webpack://@fof/discussion-language/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@fof/discussion-language/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@fof/discussion-language/./src/common/models/Language.js","webpack://@fof/discussion-language/external \"flarum.core.compat['common/helpers/icon']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/models/Forum']\"","webpack://@fof/discussion-language/./src/common/models/index.js","webpack://@fof/discussion-language/./src/common/utils/index.js","webpack://@fof/discussion-language/./node_modules/twemoji-basename/index.js","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/components/DiscussionComposer']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/Component']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/components/IndexPage']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/models/Discussion']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/utils/DiscussionControls']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/components/Modal']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/components/DiscussionPage']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/components/DiscussionHero']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/states/DiscussionListState']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/components/DiscussionListItem']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['forum/states/GlobalSearchState']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/utils/setRouteWithForcedRefresh']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['common/components/Dropdown']\"","webpack://@fof/discussion-language/./src/forum/components/Language.js","webpack://@fof/discussion-language/./src/forum/components/LanguageDiscussionModal.js","webpack://@fof/discussion-language/./src/forum/addLanguageComposer.js","webpack://@fof/discussion-language/./src/forum/components/LanguageDropdown.js","webpack://@fof/discussion-language/./src/forum/addLanguageToDiscussionList.js","webpack://@fof/discussion-language/./src/forum/components/index.js","webpack://@fof/discussion-language/./src/forum/index.js","webpack://@fof/discussion-language/./src/forum/addEditLanguageModal.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","flarum","core","compat","_inheritsLoose","subClass","superClass","constructor","__proto__","language","emoji","alt","country","className","draggable","loading","src","basename","icon","_assertThisInitialized","self","ReferenceError","_defineProperty","obj","configurable","writable","Language","Model","attribute","apiEndpoint","this","exists","data","id","models","utils","flag","str","length","charCodeAt","push","toString","join","oninit","vnode","languages","app","store","all","options","reduce","lang","code","attrs","extra","view","uppercase","toUpperCase","Component","LanguageDiscussionModal","current","selected","discussion","title","translator","trans","content","map","onclick","select","hideSubmitButton","Button","component","type","disabled","onsubmit","redraw","e","preventDefault","hide","save","relationships","then","DiscussionPage","stream","update","loaded","Modal","sort","a","b","toLowerCase","LanguageDropdown","Dropdown","buttonClassName","label","keys","active","addLanguage","items","add","components","initializers","Forum","discussionLanguages","hasMany","Discussion","hasOne","canChangeLanguage","extend","DiscussionControls","modal","show","IndexPage","promise","dislang","search","params","composer","fields","getBy","localeComposer","forum","formatter","locale","DiscussionComposer","chooseLanguage","callback","$","focus","override","original","DiscussionListItem","DiscussionHero","DiscussionListState","include","filter","q","GlobalSearchState","route","param","any","default","setRouteWithForcedRefresh"],"mappings":"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","file":"forum.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 34);\n","module.exports = flarum.core.compat['common/Model'];","module.exports = flarum.core.compat['common/extend'];","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","import basename from 'twemoji-basename';\nimport icon from 'flarum/common/helpers/icon';\n\nexport default (language) => {\n if (!language) return;\n\n const emoji = language.emoji ? language.emoji() : language;\n\n return emoji ? (\n \n ) : (\n icon('fas fa-globe')\n );\n};\n","module.exports = flarum.core.compat['common/components/Button'];","module.exports = flarum.core.compat['common/app'];","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _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}","import Model from 'flarum/common/Model';\n\nexport default class Language extends Model {\n code = Model.attribute('code');\n country = Model.attribute('country');\n\n name = Model.attribute('name');\n emoji = Model.attribute('emoji');\n\n apiEndpoint() {\n return `/fof/discussion-language${this.exists ? `/${this.data.id}` : ''}`;\n }\n}\n","module.exports = flarum.core.compat['common/helpers/icon'];","module.exports = flarum.core.compat['common/models/Forum'];","import Language from './Language';\n\nexport const models = {\n Language,\n};\n","import flag from './flag';\n\nexport const utils = {\n flag,\n};\n","/*! Copyright Twitter Inc. and other contributors. Licensed under MIT */\n/* https://github.com/twitter/twemoji/blob/gh-pages/LICENSE */\n\nmodule.exports = function (str) {\n var r = []\n var c = 0\n var p = 0\n var i = 0\n var l = str.length\n\n while (i < l) {\n c = str.charCodeAt(i++)\n if (p) {\n r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16))\n p = 0\n } else if (0xD800 <= c && c <= 0xDBFF) {\n p = c\n } else {\n r.push(c.toString(16))\n }\n }\n\n return r.join('-')\n}\n","module.exports = flarum.core.compat['forum/components/DiscussionComposer'];","module.exports = flarum.core.compat['common/Component'];","module.exports = flarum.core.compat['forum/components/IndexPage'];","module.exports = flarum.core.compat['common/models/Discussion'];","module.exports = flarum.core.compat['forum/utils/DiscussionControls'];","module.exports = flarum.core.compat['common/components/Modal'];","module.exports = flarum.core.compat['forum/components/DiscussionPage'];","module.exports = flarum.core.compat['forum/components/DiscussionHero'];","module.exports = flarum.core.compat['forum/states/DiscussionListState'];","module.exports = flarum.core.compat['forum/components/DiscussionListItem'];","module.exports = flarum.core.compat['forum/states/GlobalSearchState'];","module.exports = flarum.core.compat['common/utils/setRouteWithForcedRefresh'];","module.exports = flarum.core.compat['common/components/Dropdown'];","import Component from 'flarum/common/Component';\n\nimport flag from '../../common/utils/flag';\n\nexport default class Language extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.languages = app.store.all('discussion-languages');\n this.options = this.languages.reduce((o, lang) => {\n o[lang.code()] = (\n \n {flag(lang)} {lang.name()}\n \n );\n\n return o;\n }, this.attrs.extra || {});\n }\n\n view() {\n const { language, uppercase } = this.attrs;\n const name = language.name() || '';\n\n return (\n \n {flag(language)}\n  \n {uppercase ? name.toUpperCase() : name}\n \n );\n }\n}\n","import Modal from 'flarum/common/components/Modal';\nimport Button from 'flarum/common/components/Button';\nimport DiscussionPage from 'flarum/forum/components/DiscussionPage';\n\nimport Language from './Language';\n\nexport default class LanguageDiscussionModal extends Modal {\n oninit(vnode) {\n super.oninit(vnode);\n\n this.languages = app.store.all('discussion-languages');\n\n this.current = this.attrs.selected || (this.attrs.discussion && this.attrs.discussion.language());\n this.selected = this.current;\n }\n\n className() {\n return 'FoFLanguageDiscussionModal';\n }\n\n title() {\n return this.attrs.discussion\n ? app.translator.trans('fof-discussion-language.forum.change_language.edit_title', { title: {this.attrs.discussion.title()} })\n : app.translator.trans('fof-discussion-language.forum.change_language.title');\n }\n\n content() {\n return [\n
\n
\n {this.languages.map((language) => (\n \n \n \n ))}\n
\n\n {!this.attrs.hideSubmitButton && (\n
\n {Button.component(\n {\n type: 'submit',\n className: 'Button Button--primary',\n disabled: !this.selected || this.selected === this.current,\n loading: this.loading,\n icon: 'fas fa-check',\n },\n app.translator.trans('fof-discussion-language.forum.change_language.submit_button')\n )}\n
\n )}\n
,\n ];\n }\n\n select(language) {\n this.selected = language;\n\n if (this.attrs.hideSubmitButton) return this.onsubmit();\n\n m.redraw();\n }\n\n onsubmit(e) {\n if (e) e.preventDefault();\n\n const { discussion, onsubmit } = this.attrs;\n\n this.loading = true;\n\n if (!discussion) {\n this.hide();\n\n if (onsubmit) onsubmit(this.selected);\n\n return;\n }\n\n const language = this.selected;\n\n discussion\n .save({ relationships: { language } })\n .then(() => {\n if (app.current instanceof DiscussionPage) {\n app.current.stream.update();\n }\n\n return this.hide();\n })\n .catch(this.loaded.bind(this));\n }\n}\n","import { extend, override } from 'flarum/common/extend';\nimport app from 'flarum/common/app';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionComposer from 'flarum/forum/components/DiscussionComposer';\n\nimport LanguageDiscussionModal from './components/LanguageDiscussionModal';\nimport Language from './components/Language';\n\nconst sort = (a, b) => a.code().toLowerCase() > b.code().toLowerCase();\n\nexport default () => {\n extend(IndexPage.prototype, 'newDiscussionAction', function (promise) {\n const dislang = app.search.params().language;\n\n if (dislang) {\n promise.then((composer) => (composer.fields.language = app.store.getBy('discussion-languages', 'code', dislang)));\n } else {\n const localeComposer = app.forum.attribute('fof-discussion-language.composerLocaleDefault');\n app.composer.fields.language = localeComposer ? app.store.getBy('discussion-languages', 'code', app.translator.formatter.locale) : '';\n }\n });\n\n DiscussionComposer.prototype.chooseLanguage = function (hide, callback) {\n app.modal.show(LanguageDiscussionModal, {\n selected: this.composer.fields.language,\n hideSubmitButton: hide,\n onsubmit: (language) => {\n this.composer.fields.language = language;\n this.$('textarea').focus();\n\n if (callback) callback();\n },\n });\n };\n\n extend(DiscussionComposer.prototype, 'headerItems', function (items) {\n items.add(\n 'language',\n \n \n {this.composer.fields.language\n ? Language.component({ language: this.composer.fields.language, uppercase: true })\n : app.translator.trans('fof-discussion-language.forum.composer_discussion.choose_language_link')}\n \n ,\n 20\n );\n });\n\n override(DiscussionComposer.prototype, 'onsubmit', function (original) {\n if (!this.composer.fields.language) return this.chooseLanguage(true, original);\n\n original();\n });\n\n extend(DiscussionComposer.prototype, 'data', function (data) {\n data.relationships = data.relationships || {};\n\n data.relationships.language = this.composer.fields.language || app.store.all('discussion-languages').sort(sort)[0];\n });\n};\n","import Component from 'flarum/common/Component';\nimport Dropdown from 'flarum/common/components/Dropdown';\nimport Button from 'flarum/common/components/Button';\n\nimport Language from './Language';\n\nexport default class LanguageDropdown extends Component {\n oninit(vnode) {\n super.oninit(vnode);\n this.languages = app.store.all('discussion-languages');\n this.options = this.languages.reduce((o, lang) => {\n o[lang.code()] = ;\n\n return o;\n }, this.attrs.extra || {});\n }\n\n view() {\n const selected = this.attrs.selected;\n\n return Dropdown.component(\n {\n buttonClassName: 'Button',\n label: this.options[selected] || this.options[this.attrs.default],\n },\n Object.keys(this.options).map((key) => {\n const isSelected = selected || 'any';\n const active = key === isSelected;\n\n return Button.component(\n {\n active,\n icon: active ? 'fas fa-check' : true,\n onclick: () => this.attrs.onclick(key),\n },\n this.options[key]\n );\n })\n );\n }\n}\n","import { extend } from 'flarum/common/extend';\nimport IndexPage from 'flarum/forum/components/IndexPage';\nimport DiscussionHero from 'flarum/forum/components/DiscussionHero';\nimport DiscussionListState from 'flarum/forum/states/DiscussionListState';\nimport DiscussionListItem from 'flarum/forum/components/DiscussionListItem';\nimport GlobalSearchState from 'flarum/forum/states/GlobalSearchState';\nimport setRouteWithForcedRefresh from 'flarum/common/utils/setRouteWithForcedRefresh';\n\nimport flag from '../common/utils/flag';\nimport LanguageDropdown from './components/LanguageDropdown';\n\nconst addLanguage = function (items) {\n const language = this.attrs.discussion.language();\n\n if (!language) return;\n\n items.add(\n 'discussion-language',\n \n {flag(language) || }\n {language.name()}\n ,\n 5\n );\n};\n\nexport default () => {\n extend(DiscussionListItem.prototype, 'infoItems', addLanguage);\n extend(DiscussionHero.prototype, 'items', addLanguage);\n\n extend(DiscussionListState.prototype, 'requestParams', function (params) {\n params.include.push('language');\n\n if (app.search.params().language) {\n params.filter.q = (params.filter.q || '') + ' language:' + app.search.params().language;\n }\n });\n\n extend(GlobalSearchState.prototype, 'stickyParams', (params) => (params.language = m.route.param('language')));\n\n extend(IndexPage.prototype, 'viewItems', function (items) {\n items.add(\n 'language',\n LanguageDropdown.component({\n extra: { any: app.translator.trans('fof-discussion-language.forum.index_language.any') },\n default: 'any',\n onclick: (key) => {\n const params = app.search.params();\n\n if (key === 'any') delete params.language;\n else params.language = key;\n\n setRouteWithForcedRefresh(app.route(app.current.get('routeName'), params));\n },\n selected: app.search.params().language,\n })\n );\n });\n};\n","import Language from './Language';\nimport LanguageDiscussionModal from './LanguageDiscussionModal';\nimport LanguageDropdown from './LanguageDropdown';\n\nexport const components = {\n Language,\n LanguageDiscussionModal,\n LanguageDropdown,\n};\n","import Model from 'flarum/common/Model';\nimport Forum from 'flarum/common/models/Forum';\nimport Discussion from 'flarum/common/models/Discussion';\n\nimport Language from '../common/models/Language';\n\nimport addEditLanguageModal from './addEditLanguageModal';\nimport addLanguageComposer from './addLanguageComposer';\nimport addLanguageToDiscussionList from './addLanguageToDiscussionList';\n\nexport * from './components';\nexport * from '../common/utils';\nexport * from '../common/models';\n\napp.initializers.add('fof/discussion-language', () => {\n app.store.models['discussion-languages'] = Language;\n\n Forum.prototype.discussionLanguages = Model.hasMany('discussionLanguages');\n Discussion.prototype.language = Model.hasOne('language');\n Discussion.prototype.canChangeLanguage = Model.attribute('canChangeLanguage');\n\n addEditLanguageModal();\n addLanguageComposer();\n addLanguageToDiscussionList();\n});\n","import { extend } from 'flarum/common/extend';\nimport DiscussionControls from 'flarum/forum/utils/DiscussionControls';\nimport Button from 'flarum/common/components/Button';\n\nimport LanguageDiscussionModal from './components/LanguageDiscussionModal';\n\nexport default () => {\n extend(DiscussionControls, 'moderationControls', function (items, discussion) {\n if (discussion.canChangeLanguage()) {\n items.add(\n 'language',\n Button.component(\n {\n icon: 'fas fa-globe',\n onclick: () => app.modal.show(LanguageDiscussionModal, { discussion }),\n },\n app.translator.trans('fof-discussion-language.forum.discussion_controls.change_language_button')\n )\n );\n }\n });\n};\n"],"sourceRoot":""} \ No newline at end of file