|
|
-{"version":3,"sources":["misago.js"],"names":["window","Misago","ns","Object","getPrototypeOf","this","self","context","SETTINGS","_services","addService","name","factory","order","push","item","after","get","before","_initServices","services","ordered_services","OrderedList","forEach","undefined","service_instance","_destroyServices","reverse","destroy","registerCoreServices","Conf","ComponentFactory","RouterFactory","Api","Outlet","PageTitle","startRouting","setup","init","fixture","in_test","persistent","el","isInit","retain","ForumLayout","view","ctrl","_","component","ForumNavbar","m","config","ForumFooter","prototype","controller","container","setTitle","settings","forum_index_title","IndexPage","legalPageFactory","type_name","default_title","dashed_type_name","replace","is_destroyed","location","vm","onunload","is_busy","is_ready","content","title","api","one","then","data","body","redraw","PageHeader","trust","LoadingPage","TermsOfServicePage","gettext","PrivacyPolicyPage","Loader","setupMarkup","MisagoMarkup","options","legalLink","legal_type","url","router","href","FooterNav","isVisible","forum_footnote","terms_of_service","terms_of_service_link","privacy_policy","privacy_policy_link","indexOf","items","nav","FooterMisagoBranding","BrandFull","branding","children","src","staticUrl","alt","forum_name","desktop_navbar","forum_branding_display","forum_branding_text","route","cookie_regex","RegExp","CSRF_COOKIE_NAME","csrf_token","document","cookie","match","split","ajax","method","progress","deferred","ajax_settings","headers","X-CSRFToken","dataType","success","resolve","error","jqXHR","reject","$","promise","preloaded_data","pop","post","buildUrl","model","call","querystrings","base_url","id","many","filters","target","arguments_array","i","arguments","length","apply","mount","getElementById","Router","attr","static_url","media_url","urls","reverses","populatePatterns","urlconf","patterns","final_pattern","pattern","mode","delegate_element","delegate_name","cleanUrl","is_relative","substr","protocol","host","avatars_url","delegateClicks","element","on","e","clean_url","preventDefault","off","prefixUrl","prefix","mediaUrl","_setTitle","complete_title","page","interpolate","parent","has","obj","key","hasOwnProperty","value","returnValue","is_ordered","_items","add","values","values_only","_order","unordered","insertItem","insertAt","ordering","ordered","splice","index","iterations","startsWith","string","beginning","endsWith","tail","UrlConfInvalidComponentError","message","UrlConf","_patterns","prefixPattern","include","loadingPage"],"mappings":"CAEC,WACC,YAEAA,QAAOC,OAAS,WAEd,GAAIC,GAAKC,OAAOC,eAAeC,MAC3BC,EAAOD,IAGXA,MAAKE,SAEHC,aAIFH,KAAKI,aACLJ,KAAKK,WAAa,SAASC,EAAMC,EAASC,GACxCR,KAAKI,UAAUK,MACbH,KAAMA,EACNI,KAAMH,EACNI,MAAOX,KAAKY,IAAIJ,EAAO,SACvBK,OAAQb,KAAKY,IAAIJ,EAAO,aAI5BR,KAAKc,cAAgB,SAASC,GAC5B,GAAIC,GAAmB,GAAInB,GAAGoB,YAAYF,GAAUP,OAAM,EAC1DQ,GAAiBE,QAAQ,SAAUR,GACjC,GAAIH,GAAU,IAEZA,GADwBY,SAAtBT,EAAKA,KAAKH,QACFG,EAAKA,KAAKH,QAEVG,EAAKA,IAGjB,IAAIU,GAAmBb,EAAQN,EAC3BmB,KACFnB,EAAKS,EAAKJ,MAAQc,MAKxBpB,KAAKqB,iBAAmB,SAASN,GAC/B,GAAIC,GAAmB,GAAInB,GAAGoB,YAAYF,GAAUP,OACpDQ,GAAiBM,UACjBN,EAAiBE,QAAQ,SAAUR,GACZS,SAAjBT,EAAKa,SACPb,EAAKa,QAAQtB,MAKnBD,KAAKwB,qBAAuB,WAC1BxB,KAAKK,WAAW,OAAQR,EAAG4B,MAC3BzB,KAAKK,WAAW,YAAaR,EAAG6B,kBAChC1B,KAAKK,WAAW,SAAUR,EAAG8B,eAC7B3B,KAAKK,WAAW,MAAOR,EAAG+B,KAC1B5B,KAAKK,WAAW,SAAUR,EAAGgC,QAC7B7B,KAAKK,WAAW,QAASR,EAAGiC,WAC5B9B,KAAKK,WAAW,gBAAiBR,EAAGkC,eAItC/B,KAAKgC,OAAQ,EACbhC,KAAKiC,KAAO,SAASD,GACnBhC,KAAKgC,OACHE,QAASrC,EAAGe,IAAIoB,EAAO,UAAW,MAClCG,QAAStC,EAAGe,IAAIoB,EAAO,WAAW,IAGpChC,KAAKc,cAAcd,KAAKI,YAG1BJ,KAAKuB,QAAU,WACbvB,KAAKqB,wBAMV,SAAUxB,GACT,YAEA,IAAIuC,GAAa,SAASC,EAAIC,EAAQpC,GACpCA,EAAQqC,QAAS,EAGnB1C,GAAG2C,aACDC,KAAM,SAASC,EAAMC,GACnB,OACEA,EAAEC,UAAU/C,EAAGgD,aACfC,EAAE,mBAAoBC,OAAQX,IAC9BO,EAAEC,UAAU/C,EAAGmD,iBAIrBpD,OAAOqD,WAER,SAAUpD,GACT,YAEA,IAAII,IACFiD,WAAY,WACV,GAAIP,GAAI1C,EAAKkD,SACbR,GAAES,SAAST,EAAEU,SAASC,oBAExBb,KAAM,WACJ,MAAOK,GAAE,cACPA,EAAE,KAAM,qBACRA,EAAE,IAAK,wCACPA,EAAE,IAAK,oCAIbjD,GAAG0D,UAAYtD,GACfL,OAAOqD,WAER,SAAUpD,GACT,YAEA,IAAI2D,GAAmB,SAASC,EAAWC,GACzC,GAAIC,GAAmBF,EAAUG,QAAQ,KAAM,KAE3C3D,GACF4D,cAAc,EACdX,WAAY,WACV,GAAIP,GAAI1C,EAAKkD,SASb,OARAlD,GAAK4D,cAAe,EAEhBhE,EAAGe,IAAI+B,EAAEU,SAAUI,EAAY,SACjC9D,OAAOmE,SAAWjE,EAAGe,IAAI+B,EAAEU,SAAUI,EAAY,SAEjDxD,EAAK8D,GAAG9B,KAAKU,IAIbqB,SAAU,WACR/D,EAAK4D,cAAe,KAI1BE,IACEE,SAAS,EACTC,UAAU,EACVC,QAAS,KAETlC,KAAM,SAASU,GAEb,GAAIoB,GAAK/D,IACL+D,GAAGG,SACLvB,EAAES,SAASW,EAAGK,QAEdzB,EAAES,WAEGW,EAAGE,UACNF,EAAGE,SAAU,EAEbtB,EAAE0B,IAAIC,IAAI,cAAeX,GAAkBY,KAAK,SAASC,GACvDT,EAAGK,MAAQI,EAAKJ,OAASV,EACzBK,EAAGU,KAAOD,EAAKC,KACfV,EAAGE,SAAU,EACbF,EAAGG,UAAW,EAETjE,EAAK4D,eACRlB,EAAES,SAASW,EAAGK,OACdtB,EAAE4B,gBAOdjC,KAAM,WACJ,GAAIE,GAAI3C,KAAKmD,SAEb,OAAInD,MAAK+D,GAAGG,SACHpB,EAAE,+BAAiCa,GACxChB,EAAEC,UAAU/C,EAAG8E,YAAaP,MAAOpE,KAAK+D,GAAGK,QAC3CtB,EAAE,aACAA,EAAE8B,MAAM5E,KAAK+D,GAAGU,SAIb9B,EAAEC,UAAU/C,EAAGgF,cAI5B,OAAO5E,GAGTJ,GAAGiF,mBAAqBtB,EACtB,mBAAoBuB,QAAQ,qBAC9BlF,EAAGmF,kBAAoBxB,EACrB,iBAAkBuB,QAAQ,oBAC5BnF,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAGoF,QACDxC,KAAM,WACJ,MAAOK,GAAE,2BACPA,EAAE,qBACFA,EAAE,qBACFA,EAAE,qBACFA,EAAE,yBAKRjD,EAAGgF,aACDpC,KAAM,SAASC,EAAMC,GACnB,MAAOG,GAAE,qBACPH,EAAEC,UAAU/C,EAAGoF,YAIpBrF,OAAOqD,WAET,SAAUpD,GACT,YAEA,IAAIqF,GAAc,SAAS7C,EAAIC,EAAQpC,GACrCA,EAAQqC,QAAS,EAGnB1C,GAAGsF,cACD1C,KAAM,SAASC,EAAMyB,GACnB,MAAOrB,GAAE,yBAA0BC,OAAQmC,GAAcpC,EAAE8B,MAAMT,OAGrEvE,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAG8E,YACDlC,KAAM,SAASC,EAAM0C,GACnB,MAAOtC,GAAE,eACPA,EAAE,cACAA,EAAE,KAAMsC,EAAQhB,aAKxBxE,OAAOqD,WAER,SAAUpD,GACT,YAEA,IAAIwF,GAAY,SAAS1C,EAAG2C,EAAY5B,GACtC,GAAI6B,GAAM1F,EAAGe,IAAI+B,EAAEU,SAAUiC,EAAa,QAK1C,QAJKC,GAAO1F,EAAGe,IAAI+B,EAAEU,SAAUiC,KAC7BC,EAAM5C,EAAE6C,OAAOD,IAAID,IAGjBC,EACKzC,EAAE,KACPA,EAAE,KAAM2C,KAAMF,GAAM1F,EAAGe,IAAI+B,EAAEU,SAAUiC,EAAa,SAAU5B,KAGzD,KAIX7D,GAAG6F,WACDC,UAAW,SAAStC,GAClB,MAMoB,QALhBA,EAASuC,iBACTvC,EAASwC,mBACTxC,EAASyC,wBACTzC,EAAS0C,iBACT1C,EAAS2C,qBACXC,SAAQ,IAEZxD,KAAM,SAASC,EAAMC,GACnB,GAAIuD,KASJ,OAPIvD,GAAEU,SAASuC,gBACbM,EAAMzF,KAAKqC,EAAE,oBAAqBA,EAAE8B,MAAMjC,EAAEU,SAASuC,kBAGvDM,EAAMzF,KAAK4E,EAAU1C,EAAG,mBAAoBoC,QAAQ,sBACpDmB,EAAMzF,KAAK4E,EAAU1C,EAAG,iBAAkBoC,QAAQ,oBAE3CjC,EAAE,4BAA6BoD,MAG1CtG,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAGmD,aACDP,KAAM,SAASC,EAAMC,GACnB,GAAIwD,GAAM,IAKV,OAJItG,GAAG6F,UAAUC,UAAUhD,EAAEU,YAC3B8C,EAAMxD,EAAEC,UAAU/C,EAAG6F,YAGhB5C,EAAE,uBACPA,EAAE,aACAA,EAAE,mBACAqD,EACAxD,EAAEC,UAAU/C,EAAGuG,8BAMzBxG,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAGuG,sBACD3D,KAAM,WACJ,MAAOK,GAAE,qDACP,cAAeA,EAAE,SAAU,eAIjClD,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAGwG,WACD5D,KAAM,SAASC,EAAM4D,EAAU3D,GAC7B,GAAI4D,IACFzD,EAAE,OACA0D,IAAK7D,EAAE6C,OAAOiB,UAAU,4BACxBC,IAAK/D,EAAEU,SAASsD,aAQpB,OAJIL,IACFC,EAAS9F,KAAK6F,GAGTxD,EAAE,kBAAmB2C,KAAM9C,EAAE6C,OAAOD,IAAI,UAAWgB,MAG9D3G,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAGgD,aACDJ,KAAM,SAASC,EAAMC,GACnB,GAAIiE,KAWJ,OATIjE,GAAEU,SAASwD,wBACbD,EAAenG,KAAKkC,EAAEC,UAAU/C,EAAGwG,UAAW1D,EAAEU,SAASyD,sBAG3DF,EAAenG,KAAKqC,EAAE,qBACpBA,EAAE,KAAMA,EAAE,KAAMC,OAAQD,EAAEiE,MAAOtB,KAAM9C,EAAE6C,OAAOD,IAAI,UAAW,UAC/DzC,EAAE,KAAMA,EAAE,KAAMC,OAAQD,EAAEiE,MAAOtB,KAAM9C,EAAE6C,OAAOD,IAAI,SAAU,YAGzDzC,EAAE,kEACPA,EAAE,6CAA8C8D,QAItDhH,OAAOqD,WAER,SAAUpD,GACT,YAEA,IAAI+B,GAAM,SAASe,GAEjB,GAAIqE,GAAe,GAAIC,QAAOtE,EAAEzC,QAAQgH,iBAAmB,WAC3DlH,MAAKmH,WAAatH,EAAGe,IAAIwG,SAASC,OAAOC,MAAMN,GAAe,GAAGO,MAAM,KAAK,GAE5EvH,KAAKwH,KAAO,SAASC,EAAQlC,EAAKf,EAAMkD,GACtC,GAAIC,GAAW7E,EAAE6E,WAEbC,GACFrC,IAAKA,EACLkC,OAAQA,EACRI,SACEC,cAAe9H,KAAKmH,YAGtB3C,KAAMA,KACNuD,SAAU,OAEVC,QAAS,SAASxD,GAChBmD,EAASM,QAAQzD,IAEnB0D,MAAO,SAASC,GACdR,EAASS,OAAOD,IAIpB,OAAIT,GAAJ,QAIAW,EAAEb,KAAKI,GACAD,EAASW,UAGlBtI,KAAKY,IAAM,SAAS2E,GAClB,GAAIgD,GAAiB1I,EAAG2I,IAAI7F,EAAE4F,eAAgBhD,EAC9C,IAAIgD,EAAgB,CAClB,GAAIZ,GAAW7E,EAAE6E,UAEjB,OADAA,GAASM,QAAQM,GACVZ,EAASW,QAEhB,MAAOtI,MAAKwH,KAAK,MAAOjC,IAI5BvF,KAAKyI,KAAO,SAASlD,GACnB,MAAOvF,MAAKwH,KAAK,OAAQjC,IAI3BvF,KAAK0I,SAAW,SAASC,EAAOC,EAAMC,GACpC,GAAItD,GAAM5C,EAAE6C,OAAOsD,QAEnB,OADAvD,IAAO,OAASoD,EAAQ,KAI1B3I,KAAKsE,IAAM,SAASqE,EAAOI,GACzB,GAAIxD,GAAMvF,KAAK0I,SAASC,GAASI,EAAK,GACtC,OAAO/I,MAAKY,IAAI2E,IAGlBvF,KAAKgJ,KAAO,SAASL,EAAOM,KAI5BjJ,KAAK4I,KAAO,SAASD,EAAOO,EAAQN,EAAMpE,KAK5C3E,GAAG+B,IAAM,SAASe,GAChB,MAAO,IAAIf,GAAIe,KAEjB/C,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAG6B,iBAAmB,SAASiB,GAE7BA,EAAEC,UAAY,WAEZ,IAAK,GADDuG,MACKC,EAAI,EAAGA,EAAIC,UAAUC,OAAQF,GAAK,EACzCD,EAAgB1I,KAAK4I,UAAUD,GAIjC,OADAD,GAAgB1I,KAAKkC,GACdG,EAAEF,UAAU2G,MAAMpI,OAAWgI,MAGxCvJ,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAG4B,KAAO,SAASkB,GACjBA,EAAEU,SAAWxD,EAAGe,IAAI+B,EAAEzC,QAAS,iBAEjCN,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAGgC,QACDtB,QAAS,SAASoC,GACZA,EAAEX,MAAME,SACVY,EAAE0G,MAAMpC,SAASqC,eAAe9G,EAAEX,MAAME,SAChCS,EAAEC,UAAU/C,EAAG2C,eAI3BjB,QAAS,SAASoB,GACZA,EAAEX,MAAME,SACVY,EAAE0G,MAAM7G,EAAEX,MAAME,QAAS,SAI/BtC,OAAOqD,WAER,SAAUpD,GACT,YAEA,IAAI6J,GAAS,SAAS/G,GACpB,GAAI1C,GAAOD,IACXA,MAAK8I,SAAWT,EAAE,QAAQsB,KAAK,QAE/B3J,KAAK4J,WAAa/J,EAAGe,IAAI+B,EAAEzC,QAAS,aAAc,KAClDF,KAAK6J,UAAYhK,EAAGe,IAAI+B,EAAEzC,QAAS,YAAa,KAGhDF,KAAK8J,QACL9J,KAAK+J,WAEL,IAAIC,GAAmB,SAASC,GAC9BA,EAAQC,WAAWhJ,QAAQ,SAASqE,GAElCA,EAAI3C,UAAUO,UAAYR,CAE1B,IAAIwH,GAAgBlK,EAAK6I,SAAWvD,EAAI6E,OACxCD,GAAgBA,EAAcvG,QAAQ,KAAM,KAE5C3D,EAAK6J,KAAKK,GAAiB5E,EAAI3C,UAC/B3C,EAAK8J,SAASxE,EAAIjF,MAAQ6J,IAI9BnK,MAAK+B,aAAe,SAASkI,EAAS/H,GACpC8H,EAAiBC,GACjBjK,KAAKkC,QAAUA,EAEfY,EAAEiE,MAAMsD,KAAO,WACfvH,EAAEiE,MAAM7E,EAAS,IAAKlC,KAAK8J,OAG7B9J,KAAKuF,IAAM,SAASjF,GAClB,MAAON,MAAK+J,SAASzJ,IAIvBN,KAAKsK,iBAAmB,KACxBtK,KAAKuK,cAAgB,sBAErBvK,KAAKwK,SAAW,SAASjF,GACvB,GAAKA,EAAL,CAGA,GAAIkF,GAAmC,MAArBlF,EAAImF,OAAO,EAAG,IAAmC,OAArBnF,EAAImF,OAAO,EAAG,EAG5D,KAAKD,EAAa,CAChB,GAAI3G,GAAWnE,OAAOmE,QAItB,IAAyB,OAArByB,EAAImF,OAAO,EAAG,GAAa,CAC7B,GAAIC,GAAWpF,EAAImF,OAAO,EAAG5G,EAAS6G,SAASrB,OAAS,EACxD,IAAIqB,IAAa7G,EAAS6G,SAAW,KAAQ,MAC7CpF,GAAMA,EAAImF,OAAO5G,EAAS6G,SAASrB,OAAS,OAE5C/D,GAAMA,EAAImF,OAAO,EAInB,IAAInF,EAAImF,OAAO,EAAG5G,EAAS8G,KAAKtB,UAAYxF,EAAS8G,KAAQ,MAC7DrF,GAAMA,EAAImF,OAAO5G,EAAS8G,KAAKtB,QAIjC,GAAI/D,EAAImF,OAAO,EAAG1K,KAAK8I,SAASQ,UAAYtJ,KAAK8I,UAG7CvD,EAAImF,OAAO,EAAG1K,KAAK4J,WAAWN,UAAYtJ,KAAK4J,YAE/CrE,EAAImF,OAAO,EAAG1K,KAAK6J,UAAUP,UAAYtJ,KAAK6J,UAAlD,CAEA,GAAIgB,GAAc,eAClB,IAAItF,EAAImF,OAAO,EAAGG,EAAYvB,UAAYuB,EAE1C,MAAOtF,MAGTvF,KAAK8K,eAAiB,SAASC,GAC7B/K,KAAKsK,iBAAmBS,EACxB1C,EAAErI,KAAKsK,kBAAkBU,GAAGhL,KAAKuK,cAAe,IAAK,SAASU,GAC5D,GAAIC,GAAYjL,EAAKuK,SAASS,EAAE/B,OAAOzD,KACnCyF,KACEA,GAAapI,EAAEiE,SACjBjE,EAAEiE,MAAMmE,GAEVD,EAAEE,qBAKRnL,KAAKuB,QAAU,WACb8G,EAAErI,KAAKsK,kBAAkBc,IAAIpL,KAAKuK,eAIpC,IAAIc,GAAY,SAASC,GACvB,MAAO,UAAS/F,GACd,MAAO+F,GAAS/F,GAIpBvF,MAAKyG,UAAY4E,EAAUrL,KAAK4J,YAChC5J,KAAKuL,SAAWF,EAAUrL,KAAK6J,WAGjChK,GAAG8B,cAAgB,SAASgB,GAC1B,MAAO,IAAI+G,GAAO/G,IAGpB9C,EAAGkC,aAAe,SAASY,GACzBA,EAAE6C,OAAOzD,aAAalC,EAAGiK,KAAM1C,SAASqC,eAAe,mBACvD9G,EAAE6C,OAAOsF,eAAe1D,SAASqC,eAAe9G,EAAEX,MAAME,YAE1DtC,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAGiC,UAAY,SAASa,GACtBA,EAAE6I,UAAY,SAASpH,GACA,gBAAVA,KACTA,GAASA,MAAOA,GAGlB,IAAIqH,GAAiBrH,EAAMA,KAED,oBAAfA,GAAMsH,MAAwBtH,EAAMsH,KAAO,IACpDD,GAAkB,KAAOE,YAAY5G,QAAQ,kBAAoB2G,KAAKtH,EAAMsH,OAAQ,GAAQ,KAGlE,mBAAjBtH,GAAMwH,SACfH,GAAkB,MAAQrH,EAAMwH,QAGlCxE,SAAShD,MAAQqH,EAAiB,MAAQzL,KAAKqD,SAASsD,YAG1DhE,EAAES,SAAW,SAASgB,GAChBA,EACFpE,KAAKwL,UAAUpH,GAEfgD,SAAShD,MAAQpE,KAAKqD,SAASsD,cAIrC/G,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAGgM,IAAM,SAASC,EAAKC,GACrB,MAAY5K,UAAR2K,EACKA,EAAIE,eAAeD,IAEnB,GAIXlM,EAAGe,IAAM,SAASkL,EAAKC,EAAKE,GAC1B,MAAIpM,GAAGgM,IAAIC,EAAKC,GACPD,EAAIC,GACQ5K,SAAV8K,EACFA,EAEA9K,QAIXtB,EAAG2I,IAAM,SAASsD,EAAKC,EAAKE,GAC1B,GAAIC,GAAcrM,EAAGe,IAAIkL,EAAKC,EAAKE,EAInC,OAHIpM,GAAGgM,IAAIC,EAAKC,UACPD,GAAIC,GAENG,IAETtM,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAGoB,YAAc,SAASiF,GACxBlG,KAAKmM,YAAa,EAClBnM,KAAKoM,OAASlG,MAEdlG,KAAKqM,IAAM,SAASN,EAAKrL,EAAMF,GAC7BR,KAAKoM,OAAO3L,MACVsL,IAAKA,EACLrL,KAAMA,EACNC,MAAOd,EAAGe,IAAIJ,EAAO,SACrBK,OAAQhB,EAAGe,IAAIJ,EAAO,aAI1BR,KAAKY,IAAM,SAASmL,EAAKE,GACvB,IAAK,GAAI7C,GAAI,EAAGA,EAAIpJ,KAAKoM,OAAO9C,OAAQF,IACtC,GAAIpJ,KAAKoM,OAAOhD,GAAG2C,MAAQA,EACzB,MAAO/L,MAAKoM,OAAOhD,GAAG1I,IAI1B,OAAOuL,IAGTjM,KAAK6L,IAAM,SAASE,GAClB,MAAyB5K,UAAlBnB,KAAKY,IAAImL,IAGlB/L,KAAKsM,OAAS,WAEZ,IAAK,GADDA,MACKlD,EAAI,EAAGA,EAAIpJ,KAAKoM,OAAO9C,OAAQF,IACtCkD,EAAO7L,KAAKT,KAAKoM,OAAOhD,GAAG1I,KAE7B,OAAO4L,IAGTtM,KAAKQ,MAAQ,SAAS+L,GAMpB,MALKvM,MAAKmM,aACRnM,KAAKoM,OAASpM,KAAKwM,OAAOxM,KAAKoM,QAC/BpM,KAAKmM,YAAa,GAGhBI,GAAsC,mBAAhBA,GACjBvM,KAAKsM,SAELtM,KAAKoM,QAIhBpM,KAAKwM,OAAS,SAASC,GAuBrB,QAASC,GAAWhM,GAClB,GAAIiM,GAAW,EACoB,MAA/BC,EAAS3G,QAAQvF,EAAKqL,OACpBrL,EAAKC,OACPgM,EAAWC,EAAS3G,QAAQvF,EAAKC,OAChB,KAAbgM,IACFA,GAAY,IAELjM,EAAKG,SACd8L,EAAWC,EAAS3G,QAAQvF,EAAKG,SAGlB,KAAb8L,IACFE,EAAQC,OAAOH,EAAU,EAAGjM,GAC5BkM,EAASE,OAAOH,EAAU,EAAGjM,EAAKqL,OAnCxC,GAAIgB,KACJN,GAAUvL,QAAQ,SAAUR,GAC1BqM,EAAMtM,KAAKC,EAAKqL,MAIlB,IAAIc,MACAD,IAIJH,GAAUvL,QAAQ,SAAUR,GACrBA,EAAKC,OAAUD,EAAKG,SACvBgM,EAAQpM,KAAKC,GACbkM,EAASnM,KAAKC,EAAKqL,OA2BvB,KADA,GAAIiB,GAAa,IACVA,EAAa,GAAKD,EAAMzD,SAAWsD,EAAStD,QACjD0D,GAAc,EACdP,EAAUvL,QAAQwL,EAGpB,OAAOG,MAGVjN,OAAOqD,WAET,SAAUpD,GACT,YAEAA,GAAGoN,WAAa,SAASC,EAAQC,GAC/B,MAAqC,KAA9BD,EAAOjH,QAAQkH,IAGxBtN,EAAGuN,SAAW,SAASF,EAAQG,GAC7B,MAA6D,KAAtDH,EAAOjH,QAAQoH,EAAMH,EAAO5D,OAAS+D,EAAK/D,UAEnD1J,OAAOqD,WAER,SAAUpD,GACT,YAEAA,GAAGyN,6BAA+B,WAChCtN,KAAKuN,QAAU,gDAGjB1N,EAAG2N,QAAU,WACX,GAAIvN,GAAOD,IACXA,MAAKyN,aAELzN,KAAKkK,SAAW,WACd,MAAOlK,MAAKyN,UAGd,IAAIC,GAAgB,SAASpC,EAAQlB,GACnC,OAAQkB,EAASlB,GAASxG,QAAQ,KAAM,MAGtC+J,EAAU,SAASrC,EAAQpB,GAC7B,IAAK,GAAId,GAAI,EAAGA,EAAIc,EAASZ,OAAQF,IACnCnJ,EAAKsF,IAAImI,EAAcpC,EAAQpB,EAASd,GAAGgB,SAClCF,EAASd,GAAGxG,UACZsH,EAASd,GAAG9I,MAIzBN,MAAKuF,IAAM,SAAS6E,EAASxH,EAAWtC,GACtC,GAAyB,gBAAdsC,GACT,KAAM,IAAI/C,GAAGyN,4BAGC,MAAZlD,IACFA,EAAU,KAGRxH,YAAqB/C,GAAG2N,QAC1BG,EAAQvD,EAASxH,EAAUsH,YAE3BlK,KAAKyN,UAAUhN,MACb2J,QAASA,EACTxH,UAAWA,EACXtC,KAAMA,OAKbV,OAAOqD,WAET,SAAUpD,GACT,YAEAA,GAAG+N,YAAc,SAASjL,GACxB,MAAOG,GAAE,qBAAsBH,EAAEC,UAAU/C,EAAGoF,WAE/CrF,OAAOqD,WAET,SAAUpD,EAAI2N,GACb,YAEA,IAAI1D,GAAO,GAAI0D,EACf1D,GAAKvE,IAAI,IAAK1F,EAAG0D,UAAW,SAG5BuG,EAAKvE,IAAI,qBAAsB1F,EAAGiF,mBAAoB,oBACtDgF,EAAKvE,IAAI,mBAAoB1F,EAAGmF,kBAAmB,kBAEnDnF,EAAGiK,KAAOA,GACTlK,OAAOqD,UAAWrD,OAAOqD,UAAUuK","file":"misago.js","sourcesContent":["/* global -Misago */\n/* exported Misago */\n(function () {\n 'use strict';\n\n window.Misago = function() {\n\n var ns = Object.getPrototypeOf(this);\n var self = this;\n\n // Context data\n this.context = {\n // Empty settings\n SETTINGS: {}\n };\n\n // Services\n this._services = [];\n this.addService = function(name, factory, order) {\n this._services.push({\n name: name,\n item: factory,\n after: this.get(order, 'after'),\n before: this.get(order, 'before')\n });\n };\n\n this._initServices = function(services) {\n var ordered_services = new ns.OrderedList(services).order(false);\n ordered_services.forEach(function (item) {\n var factory = null;\n if (item.item.factory !== undefined) {\n factory = item.item.factory;\n } else {\n factory = item.item;\n }\n\n var service_instance = factory(self);\n if (service_instance) {\n self[item.name] = service_instance;\n }\n });\n };\n\n this._destroyServices = function(services) {\n var ordered_services = new ns.OrderedList(services).order();\n ordered_services.reverse();\n ordered_services.forEach(function (item) {\n if (item.destroy !== undefined) {\n item.destroy(self);\n }\n });\n };\n\n this.registerCoreServices = function() {\n this.addService('conf', ns.Conf);\n this.addService('component', ns.ComponentFactory);\n this.addService('router', ns.RouterFactory);\n this.addService('api', ns.Api);\n this.addService('outlet', ns.Outlet);\n this.addService('title', ns.PageTitle);\n this.addService('start-routing', ns.startRouting);\n };\n\n // App init/destory\n this.setup = false;\n this.init = function(setup) {\n this.setup = {\n fixture: ns.get(setup, 'fixture', null),\n in_test: ns.get(setup, 'in_test', false)\n };\n\n this._initServices(this._services);\n };\n\n this.destroy = function() {\n this._destroyServices();\n };\n };\n}());\n\n\n(function (ns) {\n 'use strict';\n\n var persistent = function(el, isInit, context) {\n context.retain = true;\n };\n\n ns.ForumLayout = {\n view: function(ctrl, _) {\n return [\n _.component(ns.ForumNavbar),\n m('#router-fixture', {config: persistent}),\n _.component(ns.ForumFooter)\n ];\n }\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n var self = {\n controller: function() {\n var _ = self.container;\n _.setTitle(_.settings.forum_index_title);\n },\n view: function() {\n return m('.container', [\n m('h1', 'Forum index page!'),\n m('p', 'Lorem ipsum dolor met sit amet elit.'),\n m('p', 'Sequar elit dolor nihi putto.')\n ]);\n }\n };\n ns.IndexPage = self;\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n var legalPageFactory = function(type_name, default_title) {\n var dashed_type_name = type_name.replace(/_/g, '-');\n\n var self = {\n is_destroyed: true,\n controller: function() {\n var _ = self.container;\n self.is_destroyed = false;\n\n if (ns.get(_.settings, type_name + '_link')) {\n window.location = ns.get(_.settings, type_name + '_link');\n } else {\n self.vm.init(_);\n }\n\n return {\n onunload: function() {\n self.is_destroyed = true;\n }\n };\n },\n vm: {\n is_busy: false,\n is_ready: false,\n content: null,\n\n init: function(_) {\n\n var vm = this;\n if (vm.is_ready) {\n _.setTitle(vm.title);\n } else {\n _.setTitle();\n\n if (!vm.is_busy) {\n vm.is_busy = true;\n\n _.api.one('legal-pages', dashed_type_name).then(function(data) {\n vm.title = data.title || default_title;\n vm.body = data.body;\n vm.is_busy = false;\n vm.is_ready = true;\n\n if (!self.is_destroyed) {\n _.setTitle(vm.title);\n m.redraw();\n }\n });\n }\n }\n }\n },\n view: function() {\n var _ = this.container;\n\n if (this.vm.is_ready) {\n return m('.page.page-legal.page-legal-' + dashed_type_name, [\n _.component(ns.PageHeader, {title: this.vm.title}),\n m('.container',\n m.trust(this.vm.body)\n )\n ]);\n } else {\n return _.component(ns.LoadingPage);\n }\n }\n };\n return self;\n };\n\n ns.TermsOfServicePage = legalPageFactory(\n 'terms_of_service', gettext('Terms of service'));\n ns.PrivacyPolicyPage = legalPageFactory(\n 'privacy_policy', gettext('Privacy policy'));\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.Loader = {\n view: function() {\n return m('.loader.sk-folding-cube', [\n m('.sk-cube1.sk-cube'),\n m('.sk-cube2.sk-cube'),\n m('.sk-cube4.sk-cube'),\n m('.sk-cube3.sk-cube')\n ]);\n }\n };\n\n ns.LoadingPage = {\n view: function(ctrl, _) {\n return m('.page.page-loading',\n _.component(ns.Loader)\n );\n }\n };\n} (Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n var setupMarkup = function(el, isInit, context) {\n context.retain = true;\n };\n\n ns.MisagoMarkup = {\n view: function(ctrl, content) {\n return m('article.misago-markup', {config: setupMarkup}, m.trust(content));\n }\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.PageHeader = {\n view: function(ctrl, options) {\n return m('.page-header',\n m('.container', [\n m('h1', options.title),\n ])\n );\n }\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n var legalLink = function(_, legal_type, default_title) {\n var url = ns.get(_.settings, legal_type + '_link');\n if (!url && ns.get(_.settings, legal_type)) {\n url = _.router.url(legal_type);\n }\n\n if (url) {\n return m('li',\n m('a', {href: url}, ns.get(_.settings, legal_type + '_title', default_title))\n );\n } else {\n return null;\n }\n };\n\n ns.FooterNav = {\n isVisible: function(settings) {\n return [\n !!settings.forum_footnote,\n !!settings.terms_of_service,\n !!settings.terms_of_service_link,\n !!settings.privacy_policy,\n !!settings.privacy_policy_link\n ].indexOf(true) !== -1;\n },\n view: function(ctrl, _) {\n var items = [];\n\n if (_.settings.forum_footnote) {\n items.push(m('li.forum-footnote', m.trust(_.settings.forum_footnote)));\n }\n\n items.push(legalLink(_, 'terms_of_service', gettext('Terms of service')));\n items.push(legalLink(_, 'privacy_policy', gettext('Privacy policy')));\n\n return m('ul.list-inline.footer-nav', items);\n }\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.ForumFooter = {\n view: function(ctrl, _) {\n var nav = null;\n if (ns.FooterNav.isVisible(_.settings)) {\n nav = _.component(ns.FooterNav);\n }\n\n return m('footer.forum-footer', [\n m('.container',\n m('.footer-content', [\n nav,\n _.component(ns.FooterMisagoBranding)\n ])\n )\n ]);\n }\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.FooterMisagoBranding = {\n view: function() {\n return m('a.misago-branding[href=http://misago-project.org]', [\n \"powered by \", m('strong', \"misago\")\n ]);\n }\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.BrandFull = {\n view: function(ctrl, branding, _) {\n var children = [\n m('img', {\n src: _.router.staticUrl('misago/img/site-logo.png'),\n alt: _.settings.forum_name\n })\n ];\n\n if (branding) {\n children.push(branding);\n }\n\n return m('a.navbar-brand', {href: _.router.url('index')}, children);\n }\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.ForumNavbar = {\n view: function(ctrl, _) {\n var desktop_navbar = [];\n\n if (_.settings.forum_branding_display) {\n desktop_navbar.push(_.component(ns.BrandFull, _.settings.forum_branding_text));\n }\n\n desktop_navbar.push(m('ul.nav.navbar-nav', [\n m('li', m(\"a\", {config: m.route, href: _.router.url('index')}, 'Index')),\n m('li', m(\"a\", {config: m.route, href: _.router.url('test')}, 'Test'))\n ]));\n\n return m('nav.navbar.navbar-default.navbar-static-top[role=\"navigation\"]', [\n m('.container.navbar-full.hidden-xs.hidden-sm', desktop_navbar)\n ]);\n }\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n var Api = function(_) {\n // Ajax implementation\n var cookie_regex = new RegExp(_.context.CSRF_COOKIE_NAME + '\\=([^;]*)');\n this.csrf_token = ns.get(document.cookie.match(cookie_regex), 0).split('=')[1];\n\n this.ajax = function(method, url, data, progress) {\n var deferred = m.deferred();\n\n var ajax_settings = {\n url: url,\n method: method,\n headers: {\n 'X-CSRFToken': this.csrf_token\n },\n\n data: data | {},\n dataType: 'json',\n\n success: function(data) {\n deferred.resolve(data);\n },\n error: function(jqXHR) {\n deferred.reject(jqXHR);\n }\n };\n\n if (progress) {\n return; // not implemented... yet!\n }\n\n $.ajax(ajax_settings);\n return deferred.promise;\n };\n\n this.get = function(url) {\n var preloaded_data = ns.pop(_.preloaded_data, url);\n if (preloaded_data) {\n var deferred = m.deferred();\n deferred.resolve(preloaded_data);\n return deferred.promise;\n } else {\n return this.ajax('GET', url);\n }\n };\n\n this.post = function(url) {\n return this.ajax('POST', url);\n };\n\n // API\n this.buildUrl = function(model, call, querystrings) {\n var url = _.router.base_url;\n url += 'api/' + model + '/';\n return url;\n };\n\n this.one = function(model, id) {\n var url = this.buildUrl(model) + id + '/';\n return this.get(url);\n };\n\n this.many = function(model, filters) {\n\n };\n\n this.call = function(model, target, call, data) {\n\n };\n };\n\n ns.Api = function(_) {\n return new Api(_);\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.ComponentFactory = function(_) {\n // Component factory\n _.component = function() {\n var arguments_array = [];\n for (var i = 0; i < arguments.length; i += 1) {\n arguments_array.push(arguments[i]);\n }\n\n arguments_array.push(_);\n return m.component.apply(undefined, arguments_array);\n };\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.Conf = function(_) {\n _.settings = ns.get(_.context, 'SETTINGS', {});\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.Outlet = {\n factory: function(_) {\n if (_.setup.fixture) {\n m.mount(document.getElementById(_.setup.fixture),\n _.component(ns.ForumLayout));\n }\n },\n\n destroy: function(_) {\n if (_.setup.fixture) {\n m.mount(_.setup.fixture, null);\n }\n }\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n var Router = function(_) {\n var self = this;\n this.base_url = $('base').attr('href');\n\n this.static_url = ns.get(_.context, 'STATIC_URL', '/');\n this.media_url = ns.get(_.context, 'MEDIA_URL', '/');\n\n // Routing\n this.urls = {};\n this.reverses = {};\n\n var populatePatterns = function(urlconf) {\n urlconf.patterns().forEach(function(url) {\n // set service container on component\n url.component.container = _;\n\n var final_pattern = self.base_url + url.pattern;\n final_pattern = final_pattern.replace('//', '/');\n\n self.urls[final_pattern] = url.component;\n self.reverses[url.name] = final_pattern;\n });\n };\n\n this.startRouting = function(urlconf, fixture) {\n populatePatterns(urlconf);\n this.fixture = fixture;\n\n m.route.mode = 'pathname';\n m.route(fixture, '/', this.urls);\n };\n\n this.url = function(name) {\n return this.reverses[name];\n };\n\n // Delegate clicks\n this.delegate_element = null;\n this.delegate_name = 'click.misago-router';\n\n this.cleanUrl = function(url) {\n if (!url) { return; }\n\n // Is link relative?\n var is_relative = url.substr(0, 1) === '/' && url.substr(0, 2) !== '//';\n\n // If link contains host, validate to see if its outgoing\n if (!is_relative) {\n var location = window.location;\n\n // If protocol matches current one, strip it from string\n // otherwhise stop handler\n if (url.substr(0, 2) !== '//') {\n var protocol = url.substr(0, location.protocol.length + 2);\n if (protocol !== location.protocol + '//') { return; }\n url = url.substr(location.protocol.length + 2);\n } else {\n url = url.substr(2);\n }\n\n // Host checks out?\n if (url.substr(0, location.host.length) !== location.host) { return; }\n url = url.substr(location.host.length);\n }\n\n // Is link within Ember app?\n if (url.substr(0, this.base_url.length) !== this.base_url) { return; }\n\n // Is link to media/static/avatar server?\n if (url.substr(0, this.static_url.length) === this.static_url) { return; }\n\n if (url.substr(0, this.media_url.length) === this.media_url) { return; }\n\n var avatars_url = '/user-avatar/';\n if (url.substr(0, avatars_url.length) === avatars_url) { return; }\n\n return url;\n };\n\n this.delegateClicks = function(element) {\n this.delegate_element = element;\n $(this.delegate_element).on(this.delegate_name, 'a', function(e) {\n var clean_url = self.cleanUrl(e.target.href);\n if (clean_url) {\n if (clean_url != m.route()) {\n m.route(clean_url);\n }\n e.preventDefault();\n }\n });\n };\n\n this.destroy = function() {\n $(this.delegate_element).off(this.delegate_name);\n };\n\n // Media/Static url\n var prefixUrl = function(prefix) {\n return function(url) {\n return prefix + url;\n };\n };\n\n this.staticUrl = prefixUrl(this.static_url);\n this.mediaUrl = prefixUrl(this.media_url);\n };\n\n ns.RouterFactory = function(_) {\n return new Router(_);\n };\n\n ns.startRouting = function(_) {\n _.router.startRouting(ns.urls, document.getElementById('router-fixture'));\n _.router.delegateClicks(document.getElementById(_.setup.fixture));\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.PageTitle = function(_) {\n _._setTitle = function(title) {\n if (typeof title === 'string') {\n title = {title: title};\n }\n\n var complete_title = title.title;\n\n if (typeof title.page !== 'undefined' && title.page > 1) {\n complete_title += ' (' + interpolate(gettext('page %(page)s'), { page:title.page }, true) + ')';\n }\n\n if (typeof title.parent !== 'undefined') {\n complete_title += ' | ' + title.parent;\n }\n\n document.title = complete_title + ' | ' + this.settings.forum_name;\n };\n\n _.setTitle = function(title) {\n if (title) {\n this._setTitle(title);\n } else {\n document.title = this.settings.forum_name;\n }\n };\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.has = function(obj, key) {\n if (obj !== undefined) {\n return obj.hasOwnProperty(key);\n } else {\n return false;\n }\n };\n\n ns.get = function(obj, key, value) {\n if (ns.has(obj, key)) {\n return obj[key];\n } else if (value !== undefined) {\n return value;\n } else {\n return undefined;\n }\n };\n\n ns.pop = function(obj, key, value) {\n var returnValue = ns.get(obj, key, value);\n if (ns.has(obj, key)) {\n delete obj[key];\n }\n return returnValue;\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.OrderedList = function(items) {\n this.is_ordered = false;\n this._items = items || [];\n\n this.add = function(key, item, order) {\n this._items.push({\n key: key,\n item: item,\n after: ns.get(order, 'after'),\n before: ns.get(order, 'before')\n });\n };\n\n this.get = function(key, value) {\n for (var i = 0; i < this._items.length; i++) {\n if (this._items[i].key === key) {\n return this._items[i].item;\n }\n }\n\n return value;\n };\n\n this.has = function(key) {\n return this.get(key) !== undefined;\n };\n\n this.values = function() {\n var values = [];\n for (var i = 0; i < this._items.length; i++) {\n values.push(this._items[i].item);\n }\n return values;\n };\n\n this.order = function(values_only) {\n if (!this.is_ordered) {\n this._items = this._order(this._items);\n this.is_ordered = true;\n }\n\n if (values_only || typeof values_only === 'undefined') {\n return this.values();\n } else {\n return this._items;\n }\n };\n\n this._order = function(unordered) {\n // Index of unordered items\n var index = [];\n unordered.forEach(function (item) {\n index.push(item.key);\n });\n\n // Ordered items\n var ordered = [];\n var ordering = [];\n\n // First pass: register items that\n // don't specify their order\n unordered.forEach(function (item) {\n if (!item.after && !item.before) {\n ordered.push(item);\n ordering.push(item.key);\n }\n });\n\n // Second pass: keep iterating items\n // until we hit iterations limit or finish\n // ordering list\n function insertItem(item) {\n var insertAt = -1;\n if (ordering.indexOf(item.key) === -1) {\n if (item.after) {\n insertAt = ordering.indexOf(item.after);\n if (insertAt !== -1) {\n insertAt += 1;\n }\n } else if (item.before) {\n insertAt = ordering.indexOf(item.before);\n }\n\n if (insertAt !== -1) {\n ordered.splice(insertAt, 0, item);\n ordering.splice(insertAt, 0, item.key);\n }\n }\n }\n\n var iterations = 200;\n while (iterations > 0 && index.length !== ordering.length) {\n iterations -= 1;\n unordered.forEach(insertItem);\n }\n\n return ordered;\n };\n };\n} (Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.startsWith = function(string, beginning) {\n return string.indexOf(beginning) === 0;\n };\n\n ns.endsWith = function(string, tail) {\n return string.indexOf(tail, string.length - tail.length) !== -1;\n };\n}(Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.UrlConfInvalidComponentError = function() {\n this.message = 'component argument should be array or object';\n };\n\n ns.UrlConf = function() {\n var self = this;\n this._patterns = [];\n\n this.patterns = function() {\n return this._patterns;\n };\n\n var prefixPattern = function(prefix, pattern) {\n return (prefix + pattern).replace('//', '/');\n };\n\n var include = function(prefix, patterns) {\n for (var i = 0; i < patterns.length; i ++) {\n self.url(prefixPattern(prefix, patterns[i].pattern),\n patterns[i].component,\n patterns[i].name);\n }\n };\n\n this.url = function(pattern, component, name) {\n if (typeof component !== 'object') {\n throw new ns.UrlConfInvalidComponentError();\n }\n\n if (pattern === '') {\n pattern = '/';\n }\n\n if (component instanceof ns.UrlConf) {\n include(pattern, component.patterns());\n } else {\n this._patterns.push({\n pattern: pattern,\n component: component,\n name: name\n });\n }\n };\n };\n} (Misago.prototype));\n\n(function (ns) {\n 'use strict';\n\n ns.loadingPage = function(_) {\n return m('.page.page-loading', _.component(ns.Loader));\n };\n} (Misago.prototype));\n\n(function (ns, UrlConf) {\n 'use strict';\n\n var urls = new UrlConf();\n urls.url('/', ns.IndexPage, 'index');\n\n // Legal pages\n urls.url('/terms-of-service/', ns.TermsOfServicePage, 'terms_of_service');\n urls.url('/privacy-policy/', ns.PrivacyPolicyPage, 'privacy_policy');\n\n ns.urls = urls;\n} (Misago.prototype, Misago.prototype.UrlConf));\n"],"sourceRoot":"/source/"}
|
|
|
+{"version":3,"sources":["misago.js"],"names":["window","Misago","ns","Object","getPrototypeOf","this","self","context","SETTINGS","_services","addService","name","factory","order","push","item","after","get","before","_initServices","services","orderedServices","OrderedList","forEach","undefined","serviceInstance","_destroyServices","reverse","destroy","registerCoreServices","Conf","ComponentFactory","RouterFactory","ajax","api","Outlet","PageTitle","startRouting","setup","init","fixture","inTest","Ajax","_","cookieRegex","RegExp","CSRF_COOKIE_NAME","csrfToken","document","cookie","match","split","runningGets","method","url","data","progress","promise","m","deferred","ajax_settings","headers","X-CSRFToken","dataType","success","pop","resolve","error","jqXHR","rejection","responseJSON","status","statusText","reject","$","preloaded","post","prototype","Api","buildUrl","model","call","querystrings","router","baseUrl","one","id","many","filters","target","component","argumentsArray","i","arguments","length","apply","settings","mount","getElementById","ForumLayout","noop","route","isActive","__controller","controller","__onunload","onunload","vm","__init","initArgs","then","ondata","finalArgs","f","container","errorPage","loading","Loader","__view","view","isReady","Router","attr","staticUrl","mediaUrl","urls","reverses","routedComponent","populatePatterns","urlconf","patterns","finalPattern","pattern","replace","mode","delegateElement","delegateName","cleanUrl","isRelative","substr","location","protocol","host","avatarsUrl","delegateClicks","element","on","e","href","preventDefault","off","prefixUrl","prefix","error403","ban","ErrorBannedRoute","Error403Route","error404","Error404Route","error500","Error500Route","_setTitle","title","completeTitle","page","interpolate","gettext","parent","forum_name","setTitle","ctrl","IndexRoute","forum_index_title","count","prop","increment","console","log","onclick","legalPageFactory","typeName","defaultTitle","dashedTypeName","startComputation","body","endComputation","PageHeader","trust","TermsOfServiceRoute","PrivacyPolicyRoute","legalLink","legalType","FooterNav","isVisible","forum_footnote","terms_of_service","terms_of_service_link","privacy_policy","privacy_policy_link","indexOf","items","ForumFooter","nav","FooterMisagoBranding","BrandFull","branding","children","src","alt","ForumNavbar","desktopNavbar","forum_branding_display","forum_branding_text","config","persistent","el","isInit","retain","LoadingPage","setupMarkup","MisagoMarkup","content","options","has","obj","key","hasOwnProperty","value","returnValue","isOrdered","_items","add","values","values_only","_order","unordered","insertItem","insertAt","ordering","ordered","splice","index","iterations","startsWith","string","beginning","endsWith","tail","UrlConfInvalidComponentError","message","toString","UrlConf","_patterns","prefixPattern","include","loadingPage"],"mappings":"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","file":"misago.js","sourcesContent":["/* global -Misago */\n/* exported Misago */\n(function () {\n 'use strict';\n\n window.Misago = function() {\n\n var ns = Object.getPrototypeOf(this);\n var self = this;\n\n // Context data\n this.context = {\n // Empty settings\n SETTINGS: {}\n };\n\n // Services\n this._services = [];\n this.addService = function(name, factory, order) {\n this._services.push({\n name: name,\n item: factory,\n after: this.get(order, 'after'),\n before: this.get(order, 'before')\n });\n };\n\n this._initServices = function(services) {\n var orderedServices = new ns.OrderedList(services).order(false);\n orderedServices.forEach(function (item) {\n var factory = null;\n if (item.item.factory !== undefined) {\n factory = item.item.factory;\n } else {\n factory = item.item;\n }\n\n var serviceInstance = factory(self);\n if (serviceInstance) {\n self[item.name] = serviceInstance;\n }\n });\n };\n\n this._destroyServices = function(services) {\n var orderedServices = new ns.OrderedList(services).order();\n orderedServices.reverse();\n orderedServices.forEach(function (item) {\n if (item.destroy !== undefined) {\n item.destroy(self);\n }\n });\n };\n\n this.registerCoreServices = function() {\n this.addService('conf', ns.Conf);\n this.addService('component', ns.ComponentFactory);\n this.addService('router', ns.RouterFactory);\n this.addService('ajax', ns.ajax);\n this.addService('api', ns.api);\n this.addService('outlet', ns.Outlet);\n this.addService('title', ns.PageTitle);\n this.addService('start-routing', ns.startRouting);\n };\n\n // App init/destory\n this.setup = false;\n this.init = function(setup) {\n this.setup = {\n fixture: ns.get(setup, 'fixture', null),\n inTest: ns.get(setup, 'inTest', false)\n };\n\n this._initServices(this._services);\n };\n\n this.destroy = function() {\n this._destroyServices();\n };\n };\n}());\n\n(function (Misago) {\n 'use strict';\n\n var Ajax = function(_) {\n var cookieRegex = new RegExp(_.context.CSRF_COOKIE_NAME + '\\=([^;]*)');\n this.csrfToken = Misago.get(document.cookie.match(cookieRegex), 0).split('=')[1];\n\n // list of gets underway\n var runningGets = {};\n\n this.ajax = function(method, url, data, progress) {\n var promise = m.deferred();\n\n var ajax_settings = {\n url: url,\n method: method,\n headers: {\n 'X-CSRFToken': this.csrfToken\n },\n\n data: data | {},\n dataType: 'json',\n\n success: function(data) {\n if (method === 'GET') {\n Misago.pop(runningGets, url);\n }\n promise.resolve(data);\n },\n error: function(jqXHR) {\n if (method === 'GET') {\n Misago.pop(runningGets, url);\n }\n\n var rejection = jqXHR.responseJSON || {};\n\n rejection.status = jqXHR.status;\n rejection.statusText = jqXHR.statusText;\n\n promise.reject(rejection);\n }\n };\n\n if (progress) {\n return; // not implemented... yet!\n }\n\n $.ajax(ajax_settings);\n return promise.promise;\n };\n\n this.get = function(url) {\n var preloaded = Misago.pop(_.context, url);\n if (preloaded) {\n var deferred = m.deferred();\n deferred.resolve(preloaded);\n return deferred.promise;\n } else if (runningGets[url] !== undefined) {\n return runningGets[url];\n } else {\n runningGets[url] = this.ajax('GET', url);\n return runningGets[url];\n }\n };\n\n this.post = function(url) {\n return this.ajax('POST', url);\n };\n };\n\n Misago.ajax = function(_) {\n return new Ajax(_);\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n var Api = function(_) {\n this.buildUrl = function(model, call, querystrings) {\n var url = _.router.baseUrl;\n url += 'api/' + model + '/';\n return url;\n };\n\n this.one = function(model, id) {\n var url = this.buildUrl(model) + id + '/';\n return _.ajax.get(url);\n };\n\n this.many = function(model, filters) {\n\n };\n\n this.call = function(model, target, call, data) {\n\n };\n };\n\n Misago.api = function(_) {\n return new Api(_);\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.ComponentFactory = function(_) {\n // Component factory\n _.component = function() {\n var argumentsArray = [];\n for (var i = 0; i < arguments.length; i += 1) {\n argumentsArray.push(arguments[i]);\n }\n\n argumentsArray.push(_);\n return m.component.apply(undefined, argumentsArray);\n };\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.Conf = function(_) {\n _.settings = Misago.get(_.context, 'SETTINGS', {});\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.Outlet = {\n factory: function(_) {\n if (_.setup.fixture) {\n m.mount(document.getElementById(_.setup.fixture),\n _.component(Misago.ForumLayout));\n }\n },\n\n destroy: function(_) {\n if (_.setup.fixture) {\n m.mount(_.setup.fixture, null);\n }\n }\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n var noop = function() {};\n\n Misago.route = function(component) {\n /*\n Boilerplate for Misago top-level components\n */\n\n // Component state\n component.isActive = true;\n\n // Wrap controller to store lifecycle methods\n var __controller = component.controller || noop;\n component.controller = function() {\n component.isActive = true;\n\n var controller = __controller.apply(component, arguments) || {};\n\n // wrap onunload for lifestate\n var __onunload = controller.onunload || noop;\n controller.onunload = function() {\n __onunload.apply(component, arguments);\n component.isActive = false;\n };\n\n return controller;\n };\n\n // Add state callbacks to View-Model\n if (component.vm && component.vm.init) {\n // wrap vm.init in promise handler\n var __init = component.vm.init;\n component.vm.init = function() {\n var initArgs = arguments;\n var promise = __init.apply(component.vm, initArgs);\n\n if (promise) {\n promise.then(function() {\n if (component.isActive && component.vm.ondata) {\n var finalArgs = [];\n for (var i = 0; i < arguments.length; i++) {\n finalArgs.push(arguments[i]);\n }\n for (var f = 0; f < initArgs.length; f++) {\n finalArgs.push(initArgs[f]);\n }\n\n component.vm.ondata.apply(component.vm, finalArgs);\n }\n }, function(error) {\n if (component.isActive) {\n component.container.router.errorPage(error);\n }\n });\n }\n };\n\n // setup default loading view\n if (!component.loading) {\n component.loading = function () {\n var _ = this.container;\n return m('.page.page-loading',\n _.component(Misago.Loader)\n );\n };\n }\n\n var __view = component.view;\n component.view = function() {\n if (component.vm.isReady) {\n return __view.apply(component, arguments);\n } else {\n return component.loading.apply(component, arguments);\n }\n };\n }\n\n return component;\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n var Router = function(_) {\n var self = this;\n this.baseUrl = $('base').attr('href');\n\n var staticUrl = Misago.get(_.context, 'STATIC_URL', '/');\n var mediaUrl = Misago.get(_.context, 'MEDIA_URL', '/');\n\n // Routing\n this.urls = {};\n this.reverses = {};\n\n var routedComponent = function(component) {\n component.container = _;\n return component;\n };\n\n var populatePatterns = function(urlconf) {\n urlconf.patterns().forEach(function(url) {\n // set service container on component\n\n var finalPattern = self.baseUrl + url.pattern;\n finalPattern = finalPattern.replace('//', '/');\n\n self.urls[finalPattern] = routedComponent(url.component);\n self.reverses[url.name] = finalPattern;\n });\n };\n\n this.startRouting = function(urlconf, fixture) {\n populatePatterns(urlconf);\n this.fixture = fixture;\n\n m.route.mode = 'pathname';\n m.route(fixture, '/', this.urls);\n };\n\n this.url = function(name) {\n return this.reverses[name];\n };\n\n // Delegate clicks\n this.delegateElement = null;\n this.delegateName = 'click.misago-router';\n\n this.cleanUrl = function(url) {\n if (!url) { return; }\n\n // Is link relative?\n var isRelative = url.substr(0, 1) === '/' && url.substr(0, 2) !== '//';\n\n // If link contains host, validate to see if its outgoing\n if (!isRelative) {\n var location = window.location;\n\n // If protocol matches current one, strip it from string\n // otherwhise stop handler\n if (url.substr(0, 2) !== '//') {\n var protocol = url.substr(0, location.protocol.length + 2);\n if (protocol !== location.protocol + '//') { return; }\n url = url.substr(location.protocol.length + 2);\n } else {\n url = url.substr(2);\n }\n\n // Host checks out?\n if (url.substr(0, location.host.length) !== location.host) { return; }\n url = url.substr(location.host.length);\n }\n\n // Is link within Ember app?\n if (url.substr(0, this.baseUrl.length) !== this.baseUrl) { return; }\n\n // Is link to media/static/avatar server?\n if (url.substr(0, staticUrl.length) === staticUrl) { return; }\n\n if (url.substr(0, mediaUrl.length) === mediaUrl) { return; }\n\n var avatarsUrl = '/user-avatar/';\n if (url.substr(0, avatarsUrl.length) === avatarsUrl) { return; }\n\n return url;\n };\n\n this.delegateClicks = function(element) {\n this.delegateElement = element;\n $(this.delegateElement).on(this.delegateName, 'a', function(e) {\n var cleanUrl = self.cleanUrl(e.target.href);\n if (cleanUrl) {\n if (cleanUrl != m.route()) {\n m.route(cleanUrl);\n }\n e.preventDefault();\n }\n });\n };\n\n this.destroy = function() {\n $(this.delegateElement).off(this.delegateName);\n };\n\n // Media/Static url\n var prefixUrl = function(prefix) {\n return function(url) {\n return prefix + url;\n };\n };\n\n this.staticUrl = prefixUrl(staticUrl);\n this.mediaUrl = prefixUrl(mediaUrl);\n\n // Errors\n this.error403 = function(error) {\n var component = null;\n if (error.ban) {\n component = routedComponent(Misago.ErrorBannedRoute);\n } else {\n component = routedComponent(Misago.Error403Route);\n }\n\n component.vm = error;\n m.mount(this.fixture, component);\n };\n\n this.error404 = function() {\n m.mount(this.fixture, routedComponent(Misago.Error404Route));\n };\n\n this.error500 = function() {\n m.mount(this.fixture, routedComponent(Misago.Error500Route));\n };\n\n this.errorPage = function(error) {\n if (error.status === 500) {\n this.error500();\n }\n\n if (error.status === 404) {\n this.error404();\n }\n\n if (error.status === 403) {\n this.error403(error);\n }\n };\n };\n\n Misago.RouterFactory = function(_) {\n return new Router(_);\n };\n\n Misago.startRouting = function(_) {\n _.router.startRouting(Misago.urls, document.getElementById('router-fixture'));\n _.router.delegateClicks(document.getElementById(_.setup.fixture));\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.PageTitle = function(_) {\n _._setTitle = function(title) {\n if (typeof title === 'string') {\n title = {title: title};\n }\n\n var completeTitle = title.title;\n\n if (typeof title.page !== 'undefined' && title.page > 1) {\n completeTitle += ' (' + interpolate(gettext('page %(page)s'), { page:title.page }, true) + ')';\n }\n\n if (typeof title.parent !== 'undefined') {\n completeTitle += ' | ' + title.parent;\n }\n\n document.title = completeTitle + ' | ' + this.settings.forum_name;\n };\n\n _.setTitle = function(title) {\n if (title) {\n this._setTitle(title);\n } else {\n document.title = this.settings.forum_name;\n }\n };\n };\n}(Misago.prototype));\n\n\n(function (Misago) {\n 'use strict';\n\n Misago.Error403Route = Misago.route({\n controller: function() {\n this.container.setTitle(gettext('Page not available'));\n },\n error: null,\n view: function(ctrl) {\n return m('.container', [\n m('h1', 'Error 403!'),\n m('p.lead', this.error || 'No perm to see this page')\n ]);\n }\n });\n\n Misago.Error404Route = Misago.route({\n controller: function() {\n this.container.setTitle(gettext('Page not found'));\n },\n view: function(ctrl) {\n return m('.container', [\n m('h1', 'Error 404!'),\n m('p.lead', 'Requested page could not be found.')\n ]);\n }\n });\n\n Misago.Error500Route = Misago.route({\n controller: function() {\n this.container.setTitle(gettext('Application error occured'));\n },\n view: function(ctrl) {\n return m('.container', [\n m('h1', 'Error 500!'),\n m('p.lead', 'Application has derped.')\n ]);\n }\n });\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.IndexRoute = Misago.route({\n controller: function() {\n var _ = this.container;\n document.title = _.settings.forum_index_title || _.settings.forum_name;\n\n var count = m.prop(0);\n\n return {\n count: count,\n increment: function() {\n console.log('increment()');\n count(count() + 1);\n }\n };\n },\n view: function(ctrl) {\n return m('.container', [\n m('h1', ['Count: ', m('strong', ctrl.count())]),\n m('p', 'Clicky click button to increase count!.'),\n m('p',\n m('button.btn.btn-primary', {onclick: ctrl.increment}, 'Clicky clicky!')\n )\n ]);\n }\n });\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n var legalPageFactory = function(typeName, defaultTitle) {\n var dashedTypeName = typeName.replace(/_/g, '-');\n\n return Misago.route({\n controller: function() {\n var _ = this.container;\n\n if (Misago.get(_.settings, typeName + '_link')) {\n window.location = Misago.get(_.settings, typeName + '_link');\n } else {\n this.vm.init(this, _);\n }\n },\n vm: {\n isReady: false,\n init: function(component, _) {\n if (this.isReady) {\n _.setTitle(this.title);\n } else {\n _.setTitle();\n return _.api.one('legal-pages', dashedTypeName);\n }\n },\n ondata: function(data, component, _) {\n m.startComputation();\n\n this.title = data.title || defaultTitle;\n this.body = data.body;\n this.isReady = true;\n\n m.endComputation();\n\n if (component.isActive) {\n _.setTitle(data.title);\n }\n }\n },\n view: function() {\n var _ = this.container;\n\n return m('.page.page-legal.page-legal-' + dashedTypeName, [\n _.component(Misago.PageHeader, {title: this.vm.title}),\n m('.container',\n m.trust(this.vm.body)\n )\n ]);\n }\n });\n };\n\n Misago.TermsOfServiceRoute = legalPageFactory(\n 'terms_of_service', gettext('Terms of service'));\n Misago.PrivacyPolicyRoute = legalPageFactory(\n 'privacy_policy', gettext('Privacy policy'));\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n var legalLink = function(_, legalType, defaultTitle) {\n var url = Misago.get(_.settings, legalType + '_link');\n if (!url && Misago.get(_.settings, legalType)) {\n url = _.router.url(legalType);\n }\n\n if (url) {\n return m('li',\n m('a', {href: url}, Misago.get(_.settings, legalType + '_title', defaultTitle))\n );\n } else {\n return null;\n }\n };\n\n Misago.FooterNav = {\n isVisible: function(settings) {\n return [\n !!settings.forum_footnote,\n !!settings.terms_of_service,\n !!settings.terms_of_service_link,\n !!settings.privacy_policy,\n !!settings.privacy_policy_link\n ].indexOf(true) !== -1;\n },\n view: function(ctrl, _) {\n var items = [];\n\n if (_.settings.forum_footnote) {\n items.push(m('li.forum-footnote', m.trust(_.settings.forum_footnote)));\n }\n\n items.push(legalLink(_, 'terms_of_service', gettext('Terms of service')));\n items.push(legalLink(_, 'privacy_policy', gettext('Privacy policy')));\n\n return m('ul.list-inline.footer-nav', items);\n }\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.ForumFooter = {\n view: function(ctrl, _) {\n var nav = null;\n if (Misago.FooterNav.isVisible(_.settings)) {\n nav = _.component(Misago.FooterNav);\n }\n\n return m('footer.forum-footer', [\n m('.container',\n m('.footer-content', [\n nav,\n _.component(Misago.FooterMisagoBranding)\n ])\n )\n ]);\n }\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.FooterMisagoBranding = {\n view: function() {\n return m('a.misago-branding[href=http://misago-project.org]', [\n \"powered by \", m('strong', \"misago\")\n ]);\n }\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.BrandFull = {\n view: function(ctrl, branding, _) {\n var children = [\n m('img', {\n src: _.router.staticUrl('misago/img/site-logo.png'),\n alt: _.settings.forum_name\n })\n ];\n\n if (branding) {\n children.push(branding);\n }\n\n return m('a.navbar-brand', {href: _.router.url('index')}, children);\n }\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.ForumNavbar = {\n view: function(ctrl, _) {\n var desktopNavbar = [];\n\n if (_.settings.forum_branding_display) {\n desktopNavbar.push(_.component(Misago.BrandFull, _.settings.forum_branding_text));\n }\n\n desktopNavbar.push(m('ul.nav.navbar-nav', [\n m('li', m(\"a\", {config: m.route, href: _.router.url('index')}, 'Index')),\n m('li', m(\"a\", {config: m.route, href: _.router.url('test')}, 'Test'))\n ]));\n\n return m('nav.navbar.navbar-default.navbar-static-top[role=\"navigation\"]', [\n m('.container.navbar-full.hidden-xs.hidden-sm', desktopNavbar)\n ]);\n }\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n var persistent = function(el, isInit, context) {\n context.retain = true;\n };\n\n Misago.ForumLayout = {\n view: function(ctrl, _) {\n return [\n _.component(Misago.ForumNavbar),\n m('#router-fixture', {config: persistent}),\n _.component(Misago.ForumFooter)\n ];\n }\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.Loader = {\n view: function() {\n return m('.loader.sk-folding-cube', [\n m('.sk-cube1.sk-cube'),\n m('.sk-cube2.sk-cube'),\n m('.sk-cube4.sk-cube'),\n m('.sk-cube3.sk-cube')\n ]);\n }\n };\n\n Misago.LoadingPage = {\n view: function(ctrl, _) {\n return m('.page.page-loading',\n _.component(Misago.Loader)\n );\n }\n };\n} (Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n var setupMarkup = function(el, isInit, context) {\n context.retain = true;\n };\n\n Misago.MisagoMarkup = {\n view: function(ctrl, content) {\n return m('article.misago-markup', {config: setupMarkup}, m.trust(content));\n }\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.PageHeader = {\n view: function(ctrl, options) {\n return m('.page-header',\n m('.container', [\n m('h1', options.title),\n ])\n );\n }\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.has = function(obj, key) {\n if (obj !== undefined) {\n return obj.hasOwnProperty(key);\n } else {\n return false;\n }\n };\n\n Misago.get = function(obj, key, value) {\n if (Misago.has(obj, key)) {\n return obj[key];\n } else if (value !== undefined) {\n return value;\n } else {\n return undefined;\n }\n };\n\n Misago.pop = function(obj, key, value) {\n var returnValue = Misago.get(obj, key, value);\n if (Misago.has(obj, key)) {\n delete obj[key];\n }\n return returnValue;\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.OrderedList = function(items) {\n this.isOrdered = false;\n this._items = items || [];\n\n this.add = function(key, item, order) {\n this._items.push({\n key: key,\n item: item,\n after: Misago.get(order, 'after'),\n before: Misago.get(order, 'before')\n });\n };\n\n this.get = function(key, value) {\n for (var i = 0; i < this._items.length; i++) {\n if (this._items[i].key === key) {\n return this._items[i].item;\n }\n }\n\n return value;\n };\n\n this.has = function(key) {\n return this.get(key) !== undefined;\n };\n\n this.values = function() {\n var values = [];\n for (var i = 0; i < this._items.length; i++) {\n values.push(this._items[i].item);\n }\n return values;\n };\n\n this.order = function(values_only) {\n if (!this.isOrdered) {\n this._items = this._order(this._items);\n this.isOrdered = true;\n }\n\n if (values_only || typeof values_only === 'undefined') {\n return this.values();\n } else {\n return this._items;\n }\n };\n\n this._order = function(unordered) {\n // Index of unordered items\n var index = [];\n unordered.forEach(function (item) {\n index.push(item.key);\n });\n\n // Ordered items\n var ordered = [];\n var ordering = [];\n\n // First pass: register items that\n // don't specify their order\n unordered.forEach(function (item) {\n if (!item.after && !item.before) {\n ordered.push(item);\n ordering.push(item.key);\n }\n });\n\n // Second pass: keep iterating items\n // until we hit iterations limit or finish\n // ordering list\n function insertItem(item) {\n var insertAt = -1;\n if (ordering.indexOf(item.key) === -1) {\n if (item.after) {\n insertAt = ordering.indexOf(item.after);\n if (insertAt !== -1) {\n insertAt += 1;\n }\n } else if (item.before) {\n insertAt = ordering.indexOf(item.before);\n }\n\n if (insertAt !== -1) {\n ordered.splice(insertAt, 0, item);\n ordering.splice(insertAt, 0, item.key);\n }\n }\n }\n\n var iterations = 200;\n while (iterations > 0 && index.length !== ordering.length) {\n iterations -= 1;\n unordered.forEach(insertItem);\n }\n\n return ordered;\n };\n };\n} (Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.startsWith = function(string, beginning) {\n return string.indexOf(beginning) === 0;\n };\n\n Misago.endsWith = function(string, tail) {\n return string.indexOf(tail, string.length - tail.length) !== -1;\n };\n}(Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.UrlConfInvalidComponentError = function(name) {\n this.message = \"route's \" + name + \" component should be an array or object\";\n\n this.toString = function() {\n return this.message;\n };\n };\n\n Misago.UrlConf = function() {\n var self = this;\n this._patterns = [];\n\n this.patterns = function() {\n return this._patterns;\n };\n\n var prefixPattern = function(prefix, pattern) {\n return (prefix + pattern).replace('//', '/');\n };\n\n var include = function(prefix, patterns) {\n for (var i = 0; i < patterns.length; i ++) {\n self.url(prefixPattern(prefix, patterns[i].pattern),\n patterns[i].component,\n patterns[i].name);\n }\n };\n\n this.url = function(pattern, component, name) {\n if (typeof component !== 'object') {\n throw new Misago.UrlConfInvalidComponentError(name);\n }\n\n if (pattern === '') {\n pattern = '/';\n }\n\n if (component instanceof Misago.UrlConf) {\n include(pattern, component.patterns());\n } else {\n this._patterns.push({\n pattern: pattern,\n component: component,\n name: name\n });\n }\n };\n };\n} (Misago.prototype));\n\n(function (Misago) {\n 'use strict';\n\n Misago.loadingPage = function(_) {\n return m('.page.page-loading', _.component(Misago.Loader));\n };\n} (Misago.prototype));\n\n(function (Misago, UrlConf) {\n 'use strict';\n\n var urls = new UrlConf();\n urls.url('/', Misago.IndexRoute, 'index');\n\n // Legal pages\n urls.url('/terms-of-service/', Misago.TermsOfServiceRoute, 'terms_of_service');\n urls.url('/privacy-policy/', Misago.PrivacyPolicyRoute, 'privacy_policy');\n\n Misago.urls = urls;\n} (Misago.prototype, Misago.prototype.UrlConf));\n"],"sourceRoot":"/source/"}
|