diff --git a/js/dist/admin.js b/js/dist/admin.js index 7c5ec19..33a146a 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=31)}([function(a,e){a.exports=flarum.core.compat.Model},function(a,e){a.exports=flarum.core.compat.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);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@12/assets/72x72/"+t()(e)+".png"})}}},function(a,e){a.exports=flarum.core.compat["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}),{})},T=n(15),z=Object.values(T),A=function(a){var e=a?"native":"name";return z.map((function(a){return a[e]})).sort((function(a,e){return a>e})).reduce((function(a,n){var i=z.indexOf(z.filter((function(a){return a[e]===n}))[0]);return a[Object.keys(T)[i]]=n,a}),{})},L=function(a){var e=T[a];return e&&e.emoji},G=n(3),K=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]},n.className=function(){return"FofDiscussionLanguagesSettingsModal Modal--medium"},n.title=function(){return app.translator.trans("fof-discussion-language.admin.settings.title")},n.content=function(){var a=this,e=I(this.native),n=A(this.native);return[m("div",{className:"Modal-body"},m("div",{className:"Form-group"},f.a.component({state:this.native,onchange:function(e){return a.native=e}},app.translator.trans("fof-discussion-language.admin.settings.native_label"))),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(G.a)(L(this.newCountry())),g.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(G.a)(L(s)),g.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(g.a,{type:"submit",className:"Button Button--primary",loading:this.loading,disabled:!this.changed(),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(){var a,e=this;this.loading=!0,Promise.all([].concat(this.dirty().map((function(a){var n=a.id();return e.updating[n]=!0,a.save({code:e.codes[n],country:e.countries[n]}).then((function(){}),(function(){})).then((function(){e.updating[n]=!1}))})),[S()((a={},a[this.nativeKey]=this.native,a))])).then(this.hide.bind(this),this.loaded.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.changed=function(){return this.dirty().length||Number(this.native)!==Number(app.data.settings[this.nativeKey]||0)},e}(d.a),P=n(5),x={LanguagesSettingsModal:K};function O(){return(O=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}),{})},T=n(14),z=Object.values(T),A=function(a){var e=a?"native":"name";return z.map((function(a){return a[e]})).sort((function(a,e){return a>e})).reduce((function(a,n){var i=z.indexOf(z.filter((function(a){return a[e]===n}))[0]);return a[Object.keys(T)[i]]=n,a}),{})},L=function(a){var e=T[a];return e&&e.emoji},G=n(3),K=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]},n.content=function(){var a=this,e=I(this.native),n=A(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){return a.native=e}},app.translator.trans("fof-discussion-language.admin.settings.native_label"))),m("div",{className:"Form-group flex"},h.a.component({onchange:this.newLocale,value:this.newLocale(),options:e}),h.a.component({onchange:this.newCountry,value:this.newCountry(),options:n}),Object(G.a)(L(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"},h.a.component({onchange:function(e){return a.codes[t]=e},value:a.codes[t]||i.code(),options:e,disabled:o||r}),h.a.component({onchange:function(e){return a.countries[t]=e},value:s,options:n,disabled:o||r}),Object(G.a)(L(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)).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(){return this.dirty().length||Number(this.native)!==Number(app.data.settings[this.nativeKey]||0)},e}(d.a),P=n(5),x={LanguagesSettingsPage:K};function O(){return(O=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 (\n emoji && (\n \n )\n );\n};\n","module.exports = flarum.core.compat['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/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['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","module.exports = flarum.core.compat['components/Modal'];","/*! 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['components/Select'];","module.exports = flarum.core.compat['helpers/icon'];","module.exports = flarum.core.compat['utils/Stream'];","module.exports = flarum.core.compat['components/PermissionGrid'];","module.exports = flarum.core.compat['components/SettingDropdown'];","module.exports = flarum.core.compat['components/Switch'];","module.exports = flarum.core.compat['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 Modal from 'flarum/components/Modal';\nimport Button from 'flarum/components/Button';\nimport Select from 'flarum/components/Select';\nimport Switch from 'flarum/components/Switch';\nimport icon from 'flarum/helpers/icon';\nimport saveSettings from 'flarum/utils/saveSettings';\nimport Stream from 'flarum/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 LanguagesSettingsModal extends Modal {\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\n className() {\n return 'FofDiscussionLanguagesSettingsModal Modal--medium';\n }\n\n title() {\n return app.translator.trans('fof-discussion-language.admin.settings.title');\n }\n\n content() {\n const locales = getLocales(this.native);\n const countries = getCountries(this.native);\n\n return [\n
\n
\n {Switch.component(\n {\n state: this.native,\n onchange: (val) => (this.native = val),\n },\n app.translator.trans('fof-discussion-language.admin.settings.native_label')\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 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() {\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({ [this.nativeKey]: this.native }),\n ]).then(this.hide.bind(this), this.loaded.bind(this));\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 changed() {\n return this.dirty().length || Number(this.native) !== Number(app.data.settings[this.nativeKey] || 0);\n }\n}\n","import LanguagesSettingsModal from './LanguagesSettingsModal';\n\nexport const components = {\n LanguagesSettingsModal,\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/extend';\nimport Forum from 'flarum/models/Forum';\nimport PermissionGrid from 'flarum/components/PermissionGrid';\nimport SettingDropdown from 'flarum/components/SettingDropdown';\n\nimport LanguagesSettingsModal from './components/LanguagesSettingsModal';\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.extensionSettings['fof-discussion-language'] = () => app.modal.show(LanguagesSettingsModal);\n\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.transChoice('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['Model']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['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['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['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['components/Select']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['helpers/icon']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['utils/Stream']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/PermissionGrid']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/SettingDropdown']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/ExtensionPage']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/Switch']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['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","_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","content","locales","getLocales","getCountries","Switch","component","state","onchange","val","translator","trans","Select","options","Button","onclick","add","disabled","adding","icon","store","all","remove","type","isChanged","save","onkeydown","e","preventDefault","createRecord","then","redraw","Promise","dirty","saveSettings","onsaved","Number","ExtensionPage","components","_extends","assign","target","arguments","source","apply","commonUtils","initializers","Forum","discussionLanguages","hasMany","extensionData","registerPage","extend","PermissionGrid","items","label","setting","minutes","parseInt","SettingDropdown","defaultLabel","transChoice","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 = 32);\n","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['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';\n\nexport default (language) => {\n if (!language) return;\n\n const emoji = language.emoji ? language.emoji() : language;\n\n return (\n emoji && (\n \n )\n );\n};\n","module.exports = flarum.core.compat['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/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['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['components/Select'];","module.exports = flarum.core.compat['helpers/icon'];","module.exports = flarum.core.compat['utils/Stream'];","module.exports = flarum.core.compat['components/PermissionGrid'];","module.exports = flarum.core.compat['components/SettingDropdown'];","module.exports = flarum.core.compat['components/ExtensionPage'];","module.exports = flarum.core.compat['components/Switch'];","module.exports = flarum.core.compat['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/components/ExtensionPage';\nimport Button from 'flarum/components/Button';\nimport Select from 'flarum/components/Select';\nimport Switch from 'flarum/components/Switch';\nimport icon from 'flarum/helpers/icon';\nimport saveSettings from 'flarum/utils/saveSettings';\nimport Stream from 'flarum/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\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) => (this.native = val),\n },\n app.translator.trans('fof-discussion-language.admin.settings.native_label')\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({ [this.nativeKey]: this.native }).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 return this.dirty().length || Number(this.native) !== Number(app.data.settings[this.nativeKey] || 0);\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/extend';\nimport Forum from 'flarum/models/Forum';\nimport PermissionGrid from 'flarum/components/PermissionGrid';\nimport SettingDropdown from 'flarum/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.transChoice('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 2849887..76311d5 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=32)}([function(t,n){t.exports=flarum.core.compat.Model},function(t,n){t.exports=flarum.core.compat.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);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@12/assets/72x72/"+o()(n)+".png"})}}},function(t,n){t.exports=flarum.core.compat["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(21),M=e.n(B),P=e(22),F=e.n(P),I=e(23),A=e.n(I),q=e(24),R=e.n(q),T=e(25),z=e.n(T),E=e(26),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(8),J=e(7);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)(g.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)(D.a.prototype,"newDiscussionAction",(function(t){var n=app.search.params().language;n?t.then((function(t){return t.fields.language=app.store.getBy("discussion-languages","code",n)})):app.composer.fields.language=""})),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)(D.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,a=0,o=0,s=t.length;on.code().toLowerCase()},B=e(21),M=e.n(B),P=e(22),F=e.n(P),I=e(23),A=e.n(I),q=e(24),R=e.n(q),T=e(25),z=e.n(T),E=e(26),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(8),J=e(7);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)(g.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)(D.a.prototype,"newDiscussionAction",(function(t){var n=app.search.params().language;n?t.then((function(t){return t.fields.language=app.store.getBy("discussion-languages","code",n)})):app.composer.fields.language=""})),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)(D.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}))}))}))}]); //# 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 33150c3..3ef0f53 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['Model']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['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['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['models/Forum']\"","webpack://@fof/discussion-language/./src/common/models/index.js","webpack://@fof/discussion-language/./src/common/utils/index.js","webpack://@fof/discussion-language/external \"flarum.core.compat['components/Modal']\"","webpack://@fof/discussion-language/./node_modules/twemoji-basename/index.js","webpack://@fof/discussion-language/external \"flarum.core.compat['components/DiscussionComposer']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['Component']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/IndexPage']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['models/Discussion']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['utils/DiscussionControls']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/DiscussionPage']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/DiscussionHero']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['states/DiscussionListState']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/DiscussionListItem']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['states/GlobalSearchState']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['utils/setRouteWithForcedRefresh']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['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","_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","icon","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","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 = 32);\n","module.exports = flarum.core.compat['Model'];","module.exports = flarum.core.compat['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';\n\nexport default (language) => {\n if (!language) return;\n\n const emoji = language.emoji ? language.emoji() : language;\n\n return (\n emoji && (\n \n )\n );\n};\n","module.exports = flarum.core.compat['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/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['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","module.exports = flarum.core.compat['components/Modal'];","/*! 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['components/DiscussionComposer'];","module.exports = flarum.core.compat['Component'];","module.exports = flarum.core.compat['components/IndexPage'];","module.exports = flarum.core.compat['models/Discussion'];","module.exports = flarum.core.compat['utils/DiscussionControls'];","module.exports = flarum.core.compat['components/DiscussionPage'];","module.exports = flarum.core.compat['components/DiscussionHero'];","module.exports = flarum.core.compat['states/DiscussionListState'];","module.exports = flarum.core.compat['components/DiscussionListItem'];","module.exports = flarum.core.compat['states/GlobalSearchState'];","module.exports = flarum.core.compat['utils/setRouteWithForcedRefresh'];","module.exports = flarum.core.compat['components/Dropdown'];","import Component from 'flarum/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/components/Modal';\nimport Button from 'flarum/components/Button';\nimport DiscussionPage from 'flarum/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/extend';\nimport IndexPage from 'flarum/components/IndexPage';\nimport DiscussionComposer from 'flarum/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 app.composer.fields.language = '';\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/Component';\nimport Dropdown from 'flarum/components/Dropdown';\nimport Button from 'flarum/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/extend';\nimport IndexPage from 'flarum/components/IndexPage';\nimport DiscussionHero from 'flarum/components/DiscussionHero';\nimport DiscussionListState from 'flarum/states/DiscussionListState';\nimport DiscussionListItem from 'flarum/components/DiscussionListItem';\nimport GlobalSearchState from 'flarum/states/GlobalSearchState';\nimport setRouteWithForcedRefresh from 'flarum/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/Model';\nimport Forum from 'flarum/models/Forum';\nimport Discussion from 'flarum/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/extend';\nimport DiscussionControls from 'flarum/utils/DiscussionControls';\nimport Button from 'flarum/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['Model']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['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['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['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['components/DiscussionComposer']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['Component']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/IndexPage']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['models/Discussion']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['utils/DiscussionControls']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/Modal']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/DiscussionPage']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/DiscussionHero']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['states/DiscussionListState']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['components/DiscussionListItem']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['states/GlobalSearchState']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['utils/setRouteWithForcedRefresh']\"","webpack://@fof/discussion-language/external \"flarum.core.compat['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","_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","icon","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","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['Model'];","module.exports = flarum.core.compat['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';\n\nexport default (language) => {\n if (!language) return;\n\n const emoji = language.emoji ? language.emoji() : language;\n\n return (\n emoji && (\n \n )\n );\n};\n","module.exports = flarum.core.compat['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/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['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['components/DiscussionComposer'];","module.exports = flarum.core.compat['Component'];","module.exports = flarum.core.compat['components/IndexPage'];","module.exports = flarum.core.compat['models/Discussion'];","module.exports = flarum.core.compat['utils/DiscussionControls'];","module.exports = flarum.core.compat['components/Modal'];","module.exports = flarum.core.compat['components/DiscussionPage'];","module.exports = flarum.core.compat['components/DiscussionHero'];","module.exports = flarum.core.compat['states/DiscussionListState'];","module.exports = flarum.core.compat['components/DiscussionListItem'];","module.exports = flarum.core.compat['states/GlobalSearchState'];","module.exports = flarum.core.compat['utils/setRouteWithForcedRefresh'];","module.exports = flarum.core.compat['components/Dropdown'];","import Component from 'flarum/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/components/Modal';\nimport Button from 'flarum/components/Button';\nimport DiscussionPage from 'flarum/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/extend';\nimport IndexPage from 'flarum/components/IndexPage';\nimport DiscussionComposer from 'flarum/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 app.composer.fields.language = '';\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/Component';\nimport Dropdown from 'flarum/components/Dropdown';\nimport Button from 'flarum/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/extend';\nimport IndexPage from 'flarum/components/IndexPage';\nimport DiscussionHero from 'flarum/components/DiscussionHero';\nimport DiscussionListState from 'flarum/states/DiscussionListState';\nimport DiscussionListItem from 'flarum/components/DiscussionListItem';\nimport GlobalSearchState from 'flarum/states/GlobalSearchState';\nimport setRouteWithForcedRefresh from 'flarum/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/Model';\nimport Forum from 'flarum/models/Forum';\nimport Discussion from 'flarum/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/extend';\nimport DiscussionControls from 'flarum/utils/DiscussionControls';\nimport Button from 'flarum/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