{"version":3,"file":"js/chunk-common-legacy.fe0c8d8f.js","mappings":"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","sources":["webpack://fc3_modtools-frontend/./src/helpers/authcheck.ts","webpack://fc3_modtools-frontend/./src/helpers/axios.ts","webpack://fc3_modtools-frontend/./src/helpers/constants.ts","webpack://fc3_modtools-frontend/./src/helpers/i18next-config.ts","webpack://fc3_modtools-frontend/./src/helpers/vuexReset.ts","webpack://fc3_modtools-frontend/./src/helpers/uuid.ts","webpack://fc3_modtools-frontend/./src/helpers/wsClient.ts","webpack://fc3_modtools-frontend/./src/App.vue?959a","webpack://fc3_modtools-frontend/./src/components/Snackbar.vue?c31d","webpack://fc3_modtools-frontend/./src/components/Snackbar.vue","webpack://fc3_modtools-frontend/./src/components/Snackbar.vue?83b4","webpack://fc3_modtools-frontend/./src/components/Snackbar.vue?8aa5","webpack://fc3_modtools-frontend/./src/mixins/Transitions.ts","webpack://fc3_modtools-frontend/./src/components/SecondaryNav.vue?f3c9","webpack://fc3_modtools-frontend/./src/components/SecondaryNav.vue","webpack://fc3_modtools-frontend/./src/components/SecondaryNav.vue?e624","webpack://fc3_modtools-frontend/./src/components/SecondaryNav.vue?1c6b","webpack://fc3_modtools-frontend/./src/components/Bottom.vue?27a3","webpack://fc3_modtools-frontend/./src/components/Bottom.vue","webpack://fc3_modtools-frontend/./src/components/Bottom.vue?3408","webpack://fc3_modtools-frontend/./src/components/Bottom.vue?41ae","webpack://fc3_modtools-frontend/./src/components/Top.vue?d6a4","webpack://fc3_modtools-frontend/./src/components/Top.vue","webpack://fc3_modtools-frontend/./src/components/Top.vue?4b59","webpack://fc3_modtools-frontend/./src/components/Top.vue?674c","webpack://fc3_modtools-frontend/./src/App.vue","webpack://fc3_modtools-frontend/./src/App.vue?7971","webpack://fc3_modtools-frontend/./src/App.vue?3a89","webpack://fc3_modtools-frontend/./src/views/RouterView.vue?ed01","webpack://fc3_modtools-frontend/./src/views/RouterView.vue","webpack://fc3_modtools-frontend/./src/router/routes.ts","webpack://fc3_modtools-frontend/./src/router/index.ts","webpack://fc3_modtools-frontend/./src/plugins/vuetify.ts","webpack://fc3_modtools-frontend/./src/plugins/vue_init.ts","webpack://fc3_modtools-frontend/./src/main.ts","webpack://fc3_modtools-frontend/./src/store/eventHub.ts","webpack://fc3_modtools-frontend/./src/store/auth/getters.ts","webpack://fc3_modtools-frontend/./src/store/auth/actions.ts","webpack://fc3_modtools-frontend/./src/store/auth/mutations.ts","webpack://fc3_modtools-frontend/./src/store/auth/index.ts","webpack://fc3_modtools-frontend/./src/store/moderator-preferences/getters.ts","webpack://fc3_modtools-frontend/./src/store/moderator-preferences/types.ts","webpack://fc3_modtools-frontend/./src/store/moderator-preferences/actions.ts","webpack://fc3_modtools-frontend/./src/store/moderator-preferences/mutations.ts","webpack://fc3_modtools-frontend/./src/store/moderator-preferences/index.ts","webpack://fc3_modtools-frontend/./src/store/posts/getters.ts","webpack://fc3_modtools-frontend/./src/store/posts/types.ts","webpack://fc3_modtools-frontend/./src/store/posts/actions.ts","webpack://fc3_modtools-frontend/./src/store/posts/mutations.ts","webpack://fc3_modtools-frontend/./src/store/posts/index.ts","webpack://fc3_modtools-frontend/./src/store/tags/getters.ts","webpack://fc3_modtools-frontend/./src/store/tags/types.ts","webpack://fc3_modtools-frontend/./src/store/tags/actions.ts","webpack://fc3_modtools-frontend/./src/store/tags/mutations.ts","webpack://fc3_modtools-frontend/./src/store/tags/index.ts","webpack://fc3_modtools-frontend/./src/store/towns/getters.ts","webpack://fc3_modtools-frontend/./src/store/towns/actions.ts","webpack://fc3_modtools-frontend/./src/store/towns/mutations.ts","webpack://fc3_modtools-frontend/./src/store/towns/index.ts","webpack://fc3_modtools-frontend/./src/store/town-memberships/getters.ts","webpack://fc3_modtools-frontend/./src/store/town-memberships/actions.ts","webpack://fc3_modtools-frontend/./src/store/town-memberships/mutations.ts","webpack://fc3_modtools-frontend/./src/store/town-memberships/index.ts","webpack://fc3_modtools-frontend/./src/store/users/getters.ts","webpack://fc3_modtools-frontend/./src/store/users/types.ts","webpack://fc3_modtools-frontend/./src/store/users/actions.ts","webpack://fc3_modtools-frontend/./src/store/users/mutations.ts","webpack://fc3_modtools-frontend/./src/store/users/index.ts","webpack://fc3_modtools-frontend/./src/store/index.ts","webpack://fc3_modtools-frontend/./src/helpers/helpscout.js","webpack://fc3_modtools-frontend/./node_modules/moment/locale/ sync ^\\.\\/.*$","webpack://fc3_modtools-frontend/./src/assets/alerts.svg","webpack://fc3_modtools-frontend/./src/assets/facebook_f_brands.svg","webpack://fc3_modtools-frontend/./src/assets/logo.svg","webpack://fc3_modtools-frontend/./src/assets/main.svg","webpack://fc3_modtools-frontend/./src/assets/messages.svg","webpack://fc3_modtools-frontend/./src/assets/profile.svg","webpack://fc3_modtools-frontend/./src/assets/twitter_brands.svg"],"sourcesContent":["import Cookies from \"js-cookie\"\nimport { API, handleError, vueDomain } from '@/helpers/axios'\nimport {eventHub} from \"@/store/eventHub\";\nimport { UserSession } from '@/store/auth/types'\nimport wsClient from '@/helpers/wsClient'\nimport i18next from 'i18next'\nimport resetStore from '@/helpers/vuexReset'\nimport store from '@/store'\nimport {fc3MainHostname} from \"@/helpers/constants\";\n\nconst authAutoCheckTimeout = 30*60*1000 // 30 minutes (in ms)\n\nexport default {\n async init(): Promise {\n const check = await this.check()\n if(check && check.user) {\n this.setupAutocheck()\n return await this.websocketSetup(check)\n }\n return null\n },\n setupAutocheck(): void {\n const checkTimeout = store.getters['auth/checkTimeout']\n if(checkTimeout) {\n clearTimeout(checkTimeout)\n }\n const newTimeout = setTimeout( () => {\n this.refresh()\n }, authAutoCheckTimeout)\n store.commit('auth/checkTimeout', newTimeout)\n },\n async websocketSetup(check: UserSession): Promise {\n if(!check.user) return null // For typescript\n const wssAuthResp = await wsClient.wssAuth()\n if(wssAuthResp.data.status !== 'authenticated') console.error('wssAuth not authenticated')\n wsClient.initialize(check.user.id);\n if(i18next.language !== check.user.language) {\n i18next.changeLanguage(check.user.language)\n }\n return check\n },\n async refresh(): Promise {\n const check = await this.check()\n if(check && check.user) {\n this.setupAutocheck()\n return check\n } else {\n this.loginRedirect()\n return null\n }\n },\n async check(): Promise {\n try {\n const authcheck = await API.get('api/user-session')\n if((authcheck.status === 200 && authcheck.data.wss)\n || this.httpCodeSwitch(authcheck.status)) {\n return authcheck.data\n }\n else {\n console.debug('request failed authcheck!', authcheck)\n handleError({ response: {\n status: authcheck.status,\n config: {\n baseURL: vueDomain(),\n url: ' '\n }\n },\n config: {\n baseURL: vueDomain(),\n url: ' '\n }})\n return null\n }\n\n } catch (e) {\n // unauthenticated users wind up here\n if(e.response.status === 401 && e.response.data.errorMessage === 'Missing authentication') {\n eventHub.$emit('triggerSnackbar', {\n color: 'warning',\n text: i18next.t('It looks like you are not logged in. Redirecting you to login in 4 seconds.'),\n timeout: 4000,\n undo: this.loginRedirect,\n undoText: i18next.t('Go to login form')\n })\n setTimeout(() => { this.loginRedirect() }, 4000)\n\n } else if(e.response.status === 403 && e.response.data.errorMessage === 'Insufficient scope') {\n eventHub.$emit('triggerSnackbar', {\n color: 'warning',\n text: i18next.t('You do not have access to the requested page. Redirecting you in 3 seconds.'),\n timeout: 3000,\n undo: this.loggedInRedirect,\n undoText: i18next.t('Redirect now')\n })\n setTimeout(() => { this.loggedInRedirect() }, 3000)\n } else {\n resetStore()\n handleError(e)\n }\n return null\n }\n },\n httpCodeSwitch(code: number) : void | boolean {\n switch (code) {\n case 401: // User is unauthenticated\n console.log('redirecting for 401')\n this.loginRedirect()\n break\n case 403: // Unauthorized request\n console.log('redirecting for 403')\n location.href = 'https://' + vueDomain() + '/?redirected=unauthorized'\n break\n case 500: // server (or axios/browser) thinks something else is wrong.\n console.debug('httpCodeSwitch response status code 500: internal error. ')\n return true;\n default:\n console.debug('httpCodeSwitch response status code: ', code)\n return true\n }\n },\n loggedInRedirect(): void {\n location.href = (location.pathname === '/') ? `https://${fc3MainHostname}` : 'https://' + vueDomain()\n },\n loginRedirect(): void {\n wsClient.close('User redirected by authcheck')\n const redirectTarget = document.URL || 'https://' + vueDomain() + '/'\n // TODO: Cookie “redirect” will be soon rejected because it has the “sameSite” attribute set to “none” or an invalid value, without the “secure” attribute. To know more about the “sameSite“ attribute, read https://developer.mozilla.org/docs/Web/HTTP/Cookies\n Cookies.set('redirect', 'to='+redirectTarget, { domain: 'freecycle.org' })\n resetStore()\n location.href = `https://${fc3MainHostname}/login`\n }\n}\n","import axios from 'axios'\nimport authcheck from '@/helpers/authcheck'\nimport {eventHub} from \"@/store/eventHub\";\nimport i18next from 'i18next'\nimport i18nextConfig from '@/helpers/i18next-config'\n\ni18next.init(i18nextConfig)\n\ninterface ResponseData {\n status: number;\n config: Record;\n}\n\ninterface ResponseError {\n response: ResponseData;\n config: {\n baseURL: string;\n url: string;\n };\n}\n\nexport const hapiDomain = (): string => {\n if (process.env.VUE_APP_ENVIRONMENT === 'development') {\n return 'mt.freecycle.org:8000'\n }\n return window.location.host // just the same as where we are. because everywhere but local dev, nginx sorts out the port.\n}\n\nexport const vueDomain = (): string => {\n if (process.env.VUE_APP_ENVIRONMENT === 'development') {\n return 'mt.freecycle.org:8080'\n }\n return window.location.host\n}\n\nexport const imagesDomain = (): string => {\n switch (process.env.VUE_APP_ENVIRONMENT) {\n case 'production':\n return 'images.freecycle.org'\n case 'staging':\n return 'devimages.freecycle.org'\n case 'development':\n return 'devimages.freecycle.org'\n default:\n return 'devimages.freecycle.org'\n }\n}\n\nexport const API = axios.create({\n baseURL: 'https://' + hapiDomain(),\n withCredentials: true,\n validateStatus: function (status) {\n return status < 500; // maybe need to play with this... this controls if axios rejects promise...\n }\n})\n\n// This pops up a snackbar error when Axios gets an error response, or if there's some other error, alerts in a different way.\nexport const handleError = (e: ResponseError): void => {\n let text;\n if (!e.response) {\n authcheck.httpCodeSwitch(500) // why pretend like it's a 500 when it's not?\n text = `${i18next.t('backend API seems to be down.')} ${e.config.baseURL}/${e.config.url}: ${e.toString()}`\n text = text + i18next.t('Sorry, please reload, or try again later. If problem persists, use help beacon below.');\n } else {\n authcheck.httpCodeSwitch(e.response.status)\n text = `${i18next.t('Error talking to backend API on')} ${e.config.baseURL}/${e.config.url}: ${e.toString()}`\n }\n\n eventHub.$emit('triggerSnackbar', {\n color: 'error',\n text,\n timeout: 12000\n })\n}\n","export const spamcontrolUserId = 29883384\nconst mainHost = (): string => {\n switch (process.env.VUE_APP_ENVIRONMENT) {\n case 'development':\n case 'staging':\n return 'newdev.freecycle.org'\n default:\n return 'www.freecycle.org'\n }\n};\n\nexport const fc3MainHostname = mainHost();\n\nexport const offer = 1;\nexport const taken = 2;\nexport const wanted = 3;\nexport const received = 4;\nexport const lend = 9;\nexport const borrow = 10;\n\nexport const vue_app_version = require('../../package.json').version\n","import i18next, { InitOptions } from 'i18next'\n\nconst isDevMode = process.env.VUE_APP_ENVIRONMENT === 'development'\nconst loadPathDomain = window.location.hostname + (isDevMode ? ':8000' : '')\n\nconst findSimpleLang = () => {\n if(Array.isArray(navigator.languages) && navigator.languages.length > 0) {\n const hyphenIndex = navigator.languages[0].indexOf('-')\n return (hyphenIndex > -1) ? navigator.languages[0].substring(0, hyphenIndex) : navigator.languages[0]\n }\n return navigator.language\n}\n\nconst i18nextConfig: InitOptions = {\n debug: (process.env.i18_DEBUG) ? (process.env.i18_DEBUG === 'true') : false,\n lng: i18next.language || findSimpleLang(),\n fallbackLng: 'en', // the key is the fallback\n fallbackNS: '',\t\t// not using namespaces\n returnEmptyString: false,\n // allow keys to be phrases having `:`, `.`\n nsSeparator: false,\n keySeparator: false,\n backend: {\n loadPath: `https://${loadPathDomain}/api/translations/${i18next.language || findSimpleLang()}.json`\n },\n parseMissingKeyHandler: (key: string) => {\n //isDevMode && console.debug('###### parseMissingKey: ', key);\n return isDevMode ? `»${key}«` : key;\n }\n}\n\nexport default i18nextConfig\n","import store from '@/store'\n\nconst resetStore = async function(): Promise {\n store.commit('auth/reset')\n store.commit('moderatorPreferences/reset')\n store.commit('posts/reset')\n store.commit('tags/reset')\n store.commit('townMemberships/reset')\n store.commit('towns/reset')\n store.commit('users/reset')\n}\n\nexport default resetStore\n","export default function(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n const r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n}\n","import authcheck from '@/helpers/authcheck'\nimport { API, handleError, hapiDomain } from '@/helpers/axios'\nimport generateUuid from '@/helpers/uuid'\nimport { eventHub } from '@/store/eventHub'\nimport { UserSession } from '@/store/auth/types'\n\nconst socket = new WebSocket('wss://' + hapiDomain() + '/wss')\nconst basePath = '/wss/'\n\ninterface WssSendObject {\n type: string;\n id?: string | null;\n version: string;\n auth?: string | Record | null;\n subs?: string[];\n path?: string;\n}\n\nconst wsClient = {\n authCheck: async (): Promise => {\n return await authcheck.init()\n },\n close: (reason?: string, code = 1000): void => {\n // https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent#Status_codes\n socket.close(code, reason)\n },\n wssAuth: async (): Promise<{data: {authenticated: boolean, status: string}}> => {\n try {\n const wssAuth = await API.get('nes/auth')\n sessionStorage.setItem('wss-token', wssAuth.data.token)\n return wssAuth\n }\n catch(error) { handleError(error) }\n return { data: { authenticated: false, status: 'unauthenticated' } }\n },\n initialize: (userId: number): void => {\n let websocketClientId = sessionStorage.getItem('websocketId')\n if(websocketClientId === null) {\n const newWebsocketClientId = generateUuid()\n sessionStorage.setItem('websocketId', newWebsocketClientId)\n websocketClientId = newWebsocketClientId\n }\n wsClient.sendHello(userId, websocketClientId)\n socket.onmessage = wsClient.handleMessage\n socket.onerror = (error) => console.error('websocket error: ', error)\n socket.onopen = (event) => eventHub.$emit('websocketOpen', event)\n socket.onclose = (event) => wsClient.reopenSocket(event, userId)\n return\n },\n reopenSocket(event: { reason: string; wasClean: boolean; code: number; }, userId: number) {\n if(event && event.reason === '') {\n wsClient.initialize(userId)\n }\n },\n sendHello(userId: number, websocketClientId?: string | null): void {\n if(!websocketClientId)\n websocketClientId = sessionStorage.getItem('websocketId')\n if(websocketClientId) {\n wsClient.send({\n type: 'hello',\n id: websocketClientId,\n version: '2',\n subs: ['/wss/user/' + userId + '/session']\n })\n }\n },\n handleMessage: (message: { data: string }): void => {\n const msgData = JSON.parse(message.data)\n let eventName = ''\n switch(msgData.type) {\n case 'hello':\n eventHub.$emit('websocketHello')\n break\n case 'ping':\n wsClient.send({\n type: 'ping',\n version: '2'\n })\n break\n case 'sub':\n if(msgData.statusCode === 400 && msgData.payload.message === 'Connection is not initialized') {\n wsClient.subscribe(msgData.path)\n }\n break\n case 'pub':\n eventName = `websocketPub-${msgData.path}`.replace('/', '-')\n eventHub.$emit(eventName, msgData.message.message)\n break\n default:\n // TODO: Handle message indicating user is unauthenticated\n // UPDATE: Not sure what triggers that message anymore. Changed to a console.error to spot it more easily\n console.error('we received a ' + msgData.type + ' message from Hapi WSS', msgData)\n break\n }\n },\n send: (message: WssSendObject): void => {\n if(!message.auth && sessionStorage.getItem('wss-token'))\n message.auth = sessionStorage.getItem('wss-token')\n if(!message.id && sessionStorage.getItem('websocketId'))\n message.id = sessionStorage.getItem('websocketId')\n return socket.send(JSON.stringify(message))\n },\n subscribe: (path: string): void => {\n const statusCheck = setInterval(() => {\n if (socket.readyState === socket.OPEN) {\n clearInterval(statusCheck)\n wsClient.send({\n type: 'sub',\n path: basePath + path,\n version: '2'\n })\n } else {\n // console.log('readyState', socket.readyState)\n }\n }, 1000)\n }\n}\n\nexport default wsClient\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.user)?_c('v-app',[_c('Top',{attrs:{\"towns\":_vm.townsAlpha}}),_c('SecondaryNav',{attrs:{\"towns\":_vm.townsAlpha}}),_c('transition',{on:{\"enter\":_vm.enter,\"leave\":_vm.leave}},[(Object.keys(_vm.towns).length && _vm.wssHelloReceived)?_c('router-view',{staticClass:\"row\",attrs:{\"id\":\"content\"}}):_vm._e()],1),_c('Bottom')],1):_vm._e(),_c('Snackbar')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"snackbar-wrapper\"},[_c('v-snackbar',{attrs:{\"top\":\"\",\"right\":\"\",\"timeout\":\"-1\",\"color\":_vm.color,\"light\":_vm.color === 'warning'},model:{value:(_vm.visible),callback:function ($$v) {_vm.visible=$$v},expression:\"visible\"}},[_vm._v(\" \"+_vm._s(_vm.text)+\" \"),(typeof _vm.undoMethod === 'function')?_c('v-btn',{attrs:{\"outlined\":\"\"},on:{\"click\":_vm.undo}},[_vm._v(\" \"+_vm._s(_vm.undoText)+\" \")]):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport { eventHub } from '@/store/eventHub'\n\ninterface SnackbarEvent {\n color: string;\n id: string;\n text: string;\n timeout: number | null;\n undo: () => void | null;\n undoText: string | null;\n}\n\nexport default Vue.extend({\n name: 'Snackbar',\n\n data() {\n return {\n color: '',\n text: '',\n timeout: null as number | null,\n undoMethod: null as (() => void) | null,\n undoText: this.$t('Undo') as string | null,\n visible: false\n }\n },\n\n computed: {\n smartTimeout(): number {\n return typeof this.timeout === 'number' ? this.timeout : 5000\n }\n },\n\n created() {\n eventHub.$on('triggerSnackbar', this.trigger)\n },\n\n methods: {\n trigger(e: SnackbarEvent) {\n Vue.set(this, 'color', this.$vuetify.theme.themes.light[e.color])\n Vue.set(this, 'text', e.text)\n Vue.set(this, 'timeout', e.timeout)\n Vue.set(this, 'undoMethod', e.undo)\n if(e.undoText)\n Vue.set(this, 'undoText', e.undoText)\n Vue.set(this, 'visible', true)\n },\n undo() {\n this.visible = false\n if (typeof this.undoMethod === 'function') this.undoMethod()\n }\n },\n\n watch: {\n visible(val) {\n if (val) setTimeout(() => { this.visible = false }, this.smartTimeout)\n }\n }\n})\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Snackbar.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Snackbar.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Snackbar.vue?vue&type=template&id=c87ab9fe&\"\nimport script from \"./Snackbar.vue?vue&type=script&lang=ts&\"\nexport * from \"./Snackbar.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Snackbar.vue?vue&type=style&index=0&id=c87ab9fe&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\ninstallComponents(component, {VBtn,VSnackbar})\n","import Vue from 'vue'\n\ndeclare module 'vue/types/vue' {\n interface Vue {\n enter(el: HTMLElement, done: TimerHandler): void;\n leave(el: HTMLElement, done: TimerHandler): void;\n }\n}\n\nexport default Vue.mixin({\n name: 'Transitions',\n\n methods: {\n enter: function (el: HTMLElement, done: TimerHandler): void {\n el.style.transition = 'opacity 600ms linear'\n\t\t\tel.style.opacity = '1'\n\t\t\tsetTimeout(done, 600)\n },\n\t\tleave:function (el: HTMLElement, done: TimerHandler): void {\n el.style.transition = 'opacity 200ms linear'\n\t\t\tel.style.opacity = '0'\n\t\t\tsetTimeout(done, 200)\n }\n }\n})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('div',{staticClass:\"row logged-in-as\"},[_c('span',[_c('MainLink'),_vm._v(\" \"+_vm._s(_vm.$t('Modtools'))+\" v\"+_vm._s(_vm.version)+\" \")],1),_vm._v(\" \"+_vm._s(_vm.$t('You are logged in as'))+\" \"+_vm._s(_vm.user.username)+\" (\"+_vm._s(_vm.user.email)+\"). \"+_vm._s(_vm.$t('You are moderator of'))+\" \"+_vm._s(_vm.moderatedTowns.length)+\" \"+_vm._s(_vm.$t((\"town\" + (_vm.moderatedTowns.length > 1 ? 's' : ''))))+\". \")]),_c('div',{staticClass:\"horizontal_tabs large-up\",attrs:{\"id\":\"main_nav\"}},[_c('ul',{staticClass:\"tabs\"},[_c('v-menu',{attrs:{\"open-on-hover\":\"\",\"close-on-content-click\":false,\"max-height\":\"70vh\",\"offset-y\":\"\",\"attach\":\"#towns-menu\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('li',_vm._g({staticClass:\"tabs-title\",attrs:{\"id\":\"towns-menu\"}},on),[_c('router-link',{attrs:{\"to\":\"/\",\"aria-selected\":_vm.$route.path === '/' || _vm.$route.path.includes('/preferences')}},[_vm._v(\" \"+_vm._s(_vm.townsMenuLabel)+\" ↓ \")])],1)]}}])},[_c('v-list',[(Object.keys(_vm.towns).length > 15)?_c('v-text-field',{attrs:{\"background-color\":\"#fff\",\"clearable\":\"\",\"filled\":\"\",\"hide-details\":\"\",\"label\":\"Filter towns list\",\"placeholder\":\"Type to filter towns\"},model:{value:(_vm.townsSearchString),callback:function ($$v) {_vm.townsSearchString=$$v},expression:\"townsSearchString\"}}):_vm._e(),_vm._l((_vm.townsFiltered),function(town){return _c('v-list-item',{key:town.uniqueName,on:{\"click\":function($event){return _vm.$router.push((\"/towns/\" + (town.uniqueName) + \"/posts\"))}}},[_c('v-list-item-title',[_vm._v(_vm._s(town.name))])],1)}),(!_vm.townsFiltered.length)?_c('v-list-item',[_c('v-list-item-title',[_vm._v(\"— No towns found —\")])],1):_vm._e()],2)],1),(_vm.$route.path === '/')?[_c('v-tooltip',{attrs:{\"max-width\":\"175\",\"right\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function(ref){\nvar on = ref.on;\nreturn [_c('li',{staticClass:\"refresh-towns-icon-wrapper\"},[_c('v-icon',_vm._g({staticClass:\"refresh-towns-icon\",on:{\"click\":function($event){return _vm.refreshTowns()}}},on),[_vm._v(\"mdi-autorenew\")])],1)]}}],null,false,2475160435)},[_c('span',[_c('b',[_vm._v(_vm._s(_vm.$t('Click to refresh your list of towns.')))])])])]:_vm._e(),(_vm.$route.params.townName)?_vm._l((_vm.townLinks),function(link){return _c('li',{key:link.path,class:['tabs-title', {'is-active': _vm.$route.path === link.path}]},[_c('router-link',{attrs:{\"to\":(\"/towns/\" + (_vm.$route.params.townName) + \"/\" + (link.path)),\"aria-selected\":_vm.$route.path.includes(link.path)}},[_vm._v(\" \"+_vm._s(_vm.$t(link.text))+\" \")])],1)}):_vm._e()],2)]),_c('div',{staticClass:\"secondary_nav\"},[_c('div',{staticClass:\"horizontal_tabs\"},[_c('ul',{staticClass:\"tabs\"},[(_vm.$route.path === '/' || _vm.$route.path === '/preferences')?[_c('li',{staticClass:\"tabs-title\"},[_c('router-link',{attrs:{\"to\":\"/\",\"aria-selected\":_vm.$route.path === '/'}},[_vm._v(_vm._s(_vm.$t('Towns')))])],1),_c('li',{staticClass:\"tabs-title\"},[_c('router-link',{attrs:{\"to\":\"/preferences\",\"aria-selected\":_vm.$route.path === '/preferences'}},[_vm._v(\" \"+_vm._s(_vm.$t('Email Settings'))+\" \")])],1)]:_vm._e(),(_vm.$route.path.includes('/towns/'))?[_vm._l((_vm.townLinks),function(link,index){return [(_vm.$route.path.split('/')[3] === link.path)?[_vm._l((link.children),function(child,childIndex){return [_c('li',{key:index + '-' + childIndex,staticClass:\"tabs-title\"},[_c('router-link',{attrs:{\"to\":(\"/towns/\" + (_vm.$route.params.townName) + \"/\" + (link.path === child.pathEnding ? '' : ((link.path) + \"/\")) + (child.pathEnding)),\"aria-selected\":_vm.$route.path.endsWith((\"\" + (child.pathEnding)))}},[_vm._v(\" \"+_vm._s(_vm.$t(child.title))+\" \")])],1)]})]:_vm._e()]})]:_vm._e()],2)])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue, { VueConstructor } from 'vue'\nimport { eventHub } from '@/store/eventHub'\nimport { mapState } from 'vuex'\nimport MainLink from '@/assets/main.svg'\nimport { vue_app_version } from '@/helpers/constants'\n\nexport default Vue.extend({\n name: 'SecondaryNav',\n props: ['towns'],\n components: { MainLink: MainLink as VueConstructor },\n computed: {\n ...mapState('auth', ['user']),\n townsMenuLabel(): string {\n // TODO - can get unique name easier via vuex like this, kinda: this.$store.getters['towns/townByName'](town.name));\n let names : {[key: string] : string} = {}\n this.towns.forEach((town: { uniqueName: string; name: string }) => { names[town.uniqueName] = town.name } )\n return (this.$route.params.townName && Object.keys(names).includes(this.$route.params.townName))\n ? `${this.$t('Moderating')}: ${names[this.$route.params.townName]}`\n : this.$t('Overview')\n },\n moderatedTowns(): number[] {\n return this.user.accesses\n .filter((access: { privilege: { id: number } }) => [3, 4].includes(access.privilege.id))\n .map((access: { to: number }) => access.to)\n .filter((value: number, index: number, self: number[]) => self.indexOf(value) === index)\n }\n },\n\n created() {\n if(Object.keys(this.towns).length) this.filterTowns()\n },\n\n data() {\n return {\n townLinks: [\n {\n path: 'posts',\n text: 'Posts',\n children: [\n {\n pathEnding: 'posts',\n title: 'Approve Posts'\n },\n {\n pathEnding: 'search',\n title: 'Search Posts'\n }\n ]\n },\n {\n path: 'members',\n text: 'Members',\n children: [\n {\n pathEnding: 'members',\n title: 'Approve Members'\n },\n {\n pathEnding: 'search',\n title: 'Search Members'\n },\n {\n pathEnding: 'invite',\n title: 'Invite Members'\n }\n ]\n },\n {\n path: 'settings',\n text: 'Town Settings',\n children: [\n {\n pathEnding: 'settings',\n title: 'General'\n },\n {\n pathEnding: 'activity',\n title: 'Town Activity'\n },\n {\n pathEnding: 'notices',\n title: 'Town Notices'\n },\n {\n pathEnding: 'hotwords',\n title: 'Hotwords'\n }\n ]\n }\n ],\n townsFiltered: [],\n townsSearchString: '',\n version: vue_app_version\n }\n },\n\n methods: {\n filterTowns(needle?: string) {\n const townsFiltered = {}\n if(!needle || needle === '') {\n for(let town of Object.keys(this.towns)) {\n if(town !== this.$route.params.townName) Object.assign(townsFiltered, {[town]: this.towns[town]})\n }\n } else {\n for(let town of Object.keys(this.towns)) {\n if(town.toLowerCase().includes(needle.toLowerCase()) && town !== this.$route.params.townName) Object.assign(townsFiltered, {[town]: this.towns[town]})\n }\n }\n Vue.set(this, 'townsFiltered', Object.values(townsFiltered))\n },\n refreshTowns() {\n eventHub.$emit('triggerSnackbar', {\n color: 'success', text: this.$t('Refreshing the list of towns you moderate.')\n })\n this.$store.dispatch('towns/fetchTowns')\n },\n updateFilteredTowns() {\n this.filterTowns(this.townsSearchString)\n }\n },\n\n watch: {\n townsSearchString(v) {\n this.filterTowns(v)\n },\n towns() {\n this.updateFilteredTowns()\n }\n }\n})\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SecondaryNav.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./SecondaryNav.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SecondaryNav.vue?vue&type=template&id=537fe1ea&\"\nimport script from \"./SecondaryNav.vue?vue&type=script&lang=ts&\"\nexport * from \"./SecondaryNav.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SecondaryNav.vue?vue&type=style&index=0&id=537fe1ea&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\ninstallComponents(component, {VIcon,VList,VListItem,VListItemTitle,VMenu,VTextField,VTooltip})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('footer',[_c('div',{staticClass:\"footer-inner column row\"},[_c('div',{staticClass:\"row footer-row\"},[_c('div',{staticClass:\"footer-image-row small-12 columns\"},[_vm._m(0),_c('div',{staticClass:\"footer-social-list-container\"},[_c('span',{staticClass:\"social-list-label\"},[_vm._v(_vm._s(_vm.$t('Follow Freecycle')))]),_c('ul',{staticClass:\"social-list\"},[_c('li',{staticClass:\"social-list-item\"},[_c('a',{attrs:{\"href\":\"https://www.facebook.com/freecycle/\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa\"},[_c('FacebookIcon')],1)])]),_c('li',{staticClass:\"social-list-item\"},[_c('a',{attrs:{\"href\":\"https://twitter.com/freecycle\",\"target\":\"_blank\"}},[_c('i',{staticClass:\"fa-brands fa-twitter\"}),_c('i',{staticClass:\"fa\"},[_c('TwitterIcon')],1)])])])])])]),_c('div',{staticClass:\"row footer-row\"},[_c('div',{staticClass:\"row\",staticStyle:{\"max-width\":\"100%\"}},[_c('ul',_vm._l((_vm.footerMenuItems),function(link){return _c('li',{key:link.name,staticClass:\"columns small-6 large-3 footer-menu-item left\"},[_c('div',[(link.path === 'help')?[_c('a',{attrs:{\"href\":\"#\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();return _vm.openHelp.apply(null, arguments)}}},[_vm._v(_vm._s(link.name))])]:[_c('a',{attrs:{\"href\":link.path,\"target\":\"_blank\"}},[_vm._v(_vm._s(link.name))])]],2)])}),0)])]),_c('div',{staticClass:\"row footer-row\"},[_c('div',{staticClass:\"small-12 columns\"},[_c('p',{staticClass:\"footer-lowlight\"},[_vm._v(\" \"+_vm._s(((_vm.$t('Copyright')) + \" ©\" + (_vm.date.getFullYear()) + \" \" + (_vm.$t('The Freecycle Network. All rights reserved')) + \". \"))+\" \"+_vm._s(_vm.$t('Freecycle and the Freecycle logo are trademarks of The Freecycle Network in various countries.'))+\" \")])])])])])}\nvar staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"footer-image-container\"},[_c('a',{attrs:{\"href\":\"/\"}},[_c('img',{attrs:{\"src\":\"/images/logo.png\"}})])])}]\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport FacebookIcon from '@/assets/facebook_f_brands.svg'\nimport TwitterIcon from '@/assets/twitter_brands.svg'\ndeclare global {\n interface Window {\n Beacon: (arg: string) => void\n }\n}\nexport default Vue.extend({\n name: 'Bottom',\n\n components:{\n FacebookIcon,\n TwitterIcon\n },\n\n data() {\n return {\n date: new Date(),\n footerMenuItems: [\n // Link names are translated here and not in the template above\n {\n path: '//www.freecycle.org/pages/guidelines',\n name: this.$t(\"Guidelines\"),\n },\n {\n path: 'https://freecycle.org/pages/ModManual/ModResources',\n name: this.$t('Moderator Manual')\n },\n {\n path: 'https://freecycle.org/pages/ModManual/modhelp',\n // path: 'help', // this would be to make the HS beacon pop up\n name: this.$t('Moderator Help')\n },\n {\n path: 'https://freecycle.org/pages/ModManual/ModTools',\n name: this.$t('Modtools Guide')\n },\n {\n path: '//www.freecycle.org/pages/volunteer',\n name: this.$t('Volunteer')\n },\n {\n path: '//www.freecycle.org/pages/privacy',\n name: this.$t('Privacy'),\n },\n {\n path: '//www.freecycle.org/pages/contact',\n name: this.$t('Contact')\n }\n ],\n path: { home: '/' }\n }\n },\n methods: {\n openHelp() { window.Beacon('open') }\n }\n})\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Bottom.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Bottom.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Bottom.vue?vue&type=template&id=d140a430&\"\nimport script from \"./Bottom.vue?vue&type=script&lang=ts&\"\nexport * from \"./Bottom.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Bottom.vue?vue&type=style&index=0&id=d140a430&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('header',{staticClass:\"header\"},[_c('div',{staticClass:\"header-outer\"},[_c('div',{staticClass:\"header-inner row\"},[_c('div',{staticClass:\"header-logo small-centered\"},[_c('a',{attrs:{\"href\":(\"https://\" + _vm.fc3MainHostname + \"/\")}},[_c('div',{attrs:{\"id\":\"fc-icon\"}},[_c('FreecycleLogo')],1)])]),_c('div',{staticClass:\"header-stretch row\",staticStyle:{\"flex-wrap\":\"wrap\",\"justify-content\":\"flex-end\",\"margin-right\":\"16px\"}},[_c('div',{staticClass:\"user-button-wrapper\"},[_c('div',{staticClass:\"header-user-buttons\"},[_c('ul',{staticClass:\"header-user-buttons-list header-user-buttons-list-left\"},[_c('li',{staticClass:\"header-user-button\"},[_c('ul',{staticClass:\"profile-options-dropdown custom-dropdown menu\",attrs:{\"data-custom-dropdown\":\"\"}},[_c('div',{staticClass:\"custom-dropdown-toggle\"},[_c('a',{staticClass:\"main-link\",attrs:{\"href\":\"javascript:void(0);\"}},[_c('MainLink')],1)]),_c('li',{staticClass:\"custom-dropdown-content\"},[_c('ul',{staticClass:\"menu\"},[_c('li',{staticClass:\"custom-dropdown-item\"},[_c('a',{attrs:{\"href\":\"https://moderator.freecycle.org/\"}},[_vm._v(\" \"+_vm._s(_vm.$t('Moderator Tools'))+\" \")])]),_vm._l((_vm.towns),function(town){return _c('li',{key:town.id,staticClass:\"custom-dropdown-item\"},[_c('router-link',{key:town.id,attrs:{\"to\":(\"/towns/\" + (town.uniqueName) + \"/posts\")}},[_vm._v(\" \"+_vm._s(town.name)+\" \")])],1)})],2)])])]),_c('li',{staticClass:\"header-user-button\"},[_c('ul',{staticClass:\"profile-options-dropdown custom-dropdown menu\",attrs:{\"data-custom-dropdown\":\"\"}},[_c('div',{staticClass:\"custom-dropdown-toggle\"},[_c('span',{staticClass:\"hide-for-small-only hide-for-medium-only hide-for-header-only\"},[_c('ProfileIcon')],1),_c('span',{staticClass:\"show-for-small-up hide-for-large\"},[_c('ProfileIcon')],1)]),_c('li',{staticClass:\"custom-dropdown-content\"},[_c('ul',{staticClass:\"menu\"},[_vm._l((_vm.menuItems),function(item){return [_c('li',{staticClass:\"custom-dropdown-item\"},[_c('a',{attrs:{\"href\":(\"https://\" + _vm.fc3MainHostname + (item.path))}},[_vm._v(\" \"+_vm._s(_vm.$t(item.name))+\" \")])])]}),_c('li',{staticClass:\"custom-dropdown-item\"},[_c('a',{attrs:{\"href\":(\"https://\" + _vm.fc3MainHostname + \"/logout\")},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.logout.apply(null, arguments)}}},[_vm._v(\" \"+_vm._s(_vm.$t('Logout'))+\" \")])])],2)])])])]),_c('ul',{staticClass:\"header-user-buttons-list header-user-buttons-list-right\"},[_c('li',{staticClass:\"header-user-button\"},[_c('a',{attrs:{\"href\":(\"https://\" + _vm.fc3MainHostname + \"/home/alerts\")}},[_c('AlertsIcon')],1)]),_c('a',{attrs:{\"href\":(\"https://\" + _vm.fc3MainHostname + \"/home/alerts\")}}),_c('li',{staticClass:\"header-user-button\"},[_c('a',{attrs:{\"href\":(\"https://\" + _vm.fc3MainHostname + \"/home/alerts\")}}),_c('a',{attrs:{\"href\":(\"https://\" + _vm.fc3MainHostname + \"/home/my-replies\")}},[_c('MessagesIcon')],1)])])])])]),_c('div',{staticClass:\"header-links\"},[_c('a',{attrs:{\"href\":(\"https://\" + _vm.fc3MainHostname + \"/home/new-post\")}},[_c('button',{staticClass:\"btn-default header-button\"},[_vm._v(_vm._s(_vm.$t('Make A Post')))])])])])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport { mapState } from 'vuex'\nimport { fc3MainHostname } from '@/helpers/constants'\n\n// svgs\nimport AlertsIcon from '@/assets/alerts.svg'\nimport FreecycleLogo from '@/assets/logo.svg'\nimport MainLink from '@/assets/main.svg'\nimport MessagesIcon from '@/assets/messages.svg'\nimport ProfileIcon from '@/assets/profile.svg'\nimport resetStore from '@/helpers/vuexReset'\nimport wsClient from '@/helpers/wsClient'\n\nexport default Vue.extend({\n name: 'Top',\n props: ['towns'],\n\n components: {\n AlertsIcon,\n FreecycleLogo,\n MainLink,\n MessagesIcon,\n ProfileIcon\n },\n\n mounted() {\n this.initDropdowns()\n },\n\n destroyed() {\n this.initDropdowns('remove')\n },\n\n data() {\n return {\n fc3MainHostname,\n menuItems: [\n {\n path: '/home/dashboard/',\n name: 'My Dashboard'\n },\n {\n path: '/home/my-replies/',\n name: 'My Messages'\n },\n {\n path: '/home/my-posts/',\n name: 'My Posts'\n },\n {\n path: '/home/my-towns/',\n name: 'My Towns'\n },\n {\n path: '/home/my-friends/',\n name: 'My Friends'\n },\n {\n path: '/home/settings/',\n name: 'My Settings'\n }\n ]\n }\n },\n\n methods: {\n initDropdowns(action = 'add') {\n const menus = document.querySelectorAll('.custom-dropdown.menu')\n for(const [_, menu] of menus.entries()) {\n\n let trigger = menu.querySelector('.custom-dropdown-toggle')\n if(trigger !== null) {\n if(action === 'add') {\n trigger.addEventListener('click', (e) => menu.classList.toggle('active'))\n } else {\n trigger.removeEventListener('click', (e) => menu.classList.toggle('active'))\n }\n }\n }\n },\n logout() {\n resetStore()\n wsClient.close()\n window.location.href = `https://${fc3MainHostname}${'/logout'}`\n }\n }\n})\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Top.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??clonedRuleSet-41.use[1]!../../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./Top.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./Top.vue?vue&type=template&id=62ca8736&\"\nimport script from \"./Top.vue?vue&type=script&lang=ts&\"\nexport * from \"./Top.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./Top.vue?vue&type=style&index=0&id=62ca8736&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport Vue from 'vue'\nimport { mapState } from 'vuex'\nimport Snackbar from '@/components/Snackbar.vue'\nimport Transitions from '@/mixins/Transitions'\nimport SecondaryNav from '@/components/SecondaryNav.vue'\nimport Bottom from '@/components/Bottom.vue'\n// import IssueCollector from '@/components/IssueCollector.vue'\nimport Top from '@/components/Top.vue'\nimport { Town } from '@/store/towns/types'\nimport { eventHub } from '@/store/eventHub'\nimport i18nextConfig from '@/helpers/i18next-config'\nimport { vue_app_version } from '@/helpers/constants'\n\nexport default Vue.extend({\n name: 'App',\n components: {\n Bottom: Vue.extend(Bottom),\n // IssueCollector: Vue.extend(IssueCollector),\n SecondaryNav: Vue.extend(SecondaryNav),\n Snackbar: Vue.extend(Snackbar),\n Top: Vue.extend(Top)\n },\n mixins: [ Vue.mixin(Transitions) ],\n computed: {\n ...mapState('auth', ['user', 'authenticated']),\n ...mapState('towns', ['towns'])\n },\n created() {\n eventHub.$on('websocketHello',\n () => Vue.set(this, 'wssHelloReceived', true))\n if(i18nextConfig.lng) {\n this.$vuetify.lang.current = i18nextConfig.lng\n } else {\n console.log('not set')\n }\n this.addFavicon()\n this.addVersionMetaTag()\n this.setTownsAlpha(this.towns)\n },\n data() {\n return {\n townsAlpha: [],\n wssHelloReceived: false\n }\n },\n methods: {\n addFavicon() {\n const head = document.getElementsByTagName('head')[0]\n const tag = document.createElement('link')\n tag.setAttribute('rel', 'icon')\n tag.setAttribute('href', 'https://' + location.host + '/images/favicon.ico')\n head.appendChild(tag)\n },\n addVersionMetaTag() {\n if(typeof vue_app_version === 'string') {\n const head = document.getElementsByTagName('head')[0]\n const tag = document.createElement('meta')\n tag.setAttribute('name', 'tfn-version')\n tag.setAttribute('content', vue_app_version)\n head.appendChild(tag)\n }\n },\n alphaSort(a: Town, b: Town) {\n if (a.name < b.name) return -1\n if (a.name > b.name) return 1\n return 0\n },\n setTownsAlpha(v: Town[]) {\n const sorted = Object.values(v).sort(this.alphaSort as (a: unknown, b: unknown) => number)\n Vue.set(this, 'townsAlpha', sorted)\n }\n },\n watch: {\n towns(v) {\n this.setTownsAlpha(v)\n }\n }\n})\n","import mod from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??clonedRuleSet-41.use[1]!../node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=14f90328&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports\n\n/* vuetify-loader */\nimport installComponents from \"!../node_modules/vuetify-loader/lib/runtime/installComponents.js\"\nimport { VApp } from 'vuetify/lib/components/VApp';\ninstallComponents(component, {VApp})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('router-view')}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./RouterView.vue?vue&type=template&id=bcedca6c&\"\nvar script = {}\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import RouterView from '@/views/RouterView.vue'\nimport i18next from 'i18next'\nimport i18nextConfig from '@/helpers/i18next-config'\nimport {RouteConfig} from \"vue-router\";\n\ni18next.init(i18nextConfig)\n\nexport const routes: RouteConfig[] = [\n {\n path: '/',\n component: RouterView,\n children: [\n {\n path: '/',\n name: i18next.t('Overview'),\n meta: { title: `ModTools - ${i18next.t('Overview')} | Freecycle` },\n component: (): Promise => import('@/views/home/Overview.vue')\n },\n {\n path: 'preferences',\n name: i18next.t('Preferences'),\n meta: { title: `ModTools - ${i18next.t('Preferences')} | Freecycle` },\n component: (): Promise => import('@/views/home/Preferences.vue')\n }\n ] as unknown as undefined\n },\n {\n path: '/towns',\n component: RouterView,\n children: [\n {\n path: ':townName',\n redirect: '/towns/:townName/posts',\n component: RouterView,\n children: [\n {\n path: 'members',\n component: RouterView,\n children: [\n {\n path: '/',\n name: i18next.t('Approve Members'),\n meta: { title: `ModTools - ${i18next.t('Approve Members')} | Freecycle` },\n component: (): Promise => import('@/views/town/members/ApproveMembers.vue')\n },\n {\n path: 'invite',\n name: i18next.t('Invite Members'),\n meta: { title: `ModTools - ${i18next.t('Invite Members')} | Freecycle` },\n component: (): Promise => import('@/views/town/members/InviteMembers.vue')\n },\n {\n path: 'search',\n name: i18next.t('Search Members'),\n meta: { title: `ModTools - ${i18next.t('Search Members')} | Freecycle` },\n component: (): Promise => import('@/views/town/members/SearchMembers.vue')\n },\n {\n path: ':userId',\n name: i18next.t('Member Profile'),\n meta: { title: `ModTools - ${i18next.t('Member Profile')} | Freecycle` },\n component: (): Promise => import('@/views/town/members/MemberProfile.vue'),\n children: [\n {\n path: 'posts/:postId/preview',\n name: i18next.t('Members Post Preview'),\n meta: { title: `ModTools - ${i18next.t('Members Post Preview')} | Freecycle` },\n component: (): Promise => import('@/components/PostPreview.vue')\n }\n ]\n }\n ]\n },\n {\n path: 'posts',\n component: RouterView,\n children: [\n {\n path: '/',\n name: i18next.t('Approve Posts'),\n meta: { title: `ModTools - ${i18next.t('Approve Posts')} | Freecycle` },\n component: (): Promise => import('@/views/town/posts/ApprovePosts.vue'),\n children: [\n {\n path: ':postId/preview',\n name: i18next.t('Posts Post Preview'),\n meta: { title: `ModTools - ${i18next.t('Posts Post Preview')} | Freecycle` },\n component: (): Promise => import('@/components/PostPreview.vue')\n }\n ]\n },\n {\n path: 'search',\n name: i18next.t('Search Posts'),\n meta: { title: `ModTools - ${i18next.t('Search Posts')} | Freecycle` },\n component: (): Promise => import('@/views/town/posts/SearchPosts.vue'),\n children: [\n {\n path: 'results/:postId/preview',\n name: i18next.t('Preview'),\n meta: { title: `ModTools - ${i18next.t('Post Preview')} | Freecycle` },\n component: (): Promise => import('@/components/PostPreview.vue')\n }\n ]\n },\n {\n path: ':postId/edit',\n name: i18next.t('Edit Post'),\n meta: { title: `ModTools - ${i18next.t('Edit Post')} | Freecycle` },\n component: (): Promise => import('@/views/town/posts/EditPost.vue')\n }\n ]\n },\n {\n path: 'settings',\n component: RouterView,\n children: [\n {\n path: '/',\n name: i18next.t('Town Settings'),\n meta: { title: `ModTools - ${i18next.t('Town Settings')} | Freecycle` },\n component: (): Promise => import('@/views/town/settings/General.vue')\n },\n {\n path: 'activity',\n name: i18next.t('Town Activity'),\n meta: { title: `ModTools - ${i18next.t('Town Activity')} | Freecycle` },\n component: (): Promise => import('@/views/town/settings/Activity.vue')\n },\n {\n path: 'notices',\n name: i18next.t('Town Notices'),\n meta: { title: `ModTools - ${i18next.t('Town Notices')} | Freecycle` },\n component: (): Promise => import('@/views/town/settings/Notices.vue'),\n children: [\n {\n path: 'automation',\n name: i18next.t('Automated Notices'),\n meta: { title: `ModTools - ${i18next.t('Automated Notices')} | Freecycle` },\n component: (): Promise => import('@/views/town/settings/NoticeAutomation.vue')\n }\n ]\n },\n {\n path: 'notices/add',\n name: i18next.t('Add Notice'),\n meta: { title: `ModTools - ${i18next.t('Add Notice')} | Freecycle` },\n component: (): Promise => import('@/views/town/settings/NoticeAdd.vue'),\n },\n {\n path: 'notices/:noticeId/edit',\n name: i18next.t('Edit Notice'),\n meta: { title: `ModTools - ${i18next.t('Edit Notice')} | Freecycle` },\n component: (): Promise => import('@/views/town/settings/NoticeEdit.vue'),\n },\n {\n path: 'hotwords',\n name: i18next.t('Hotwords'),\n meta: { title: `ModTools - ${i18next.t('Hotwords')} | Freecycle` },\n component: (): Promise => import('@/views/town/settings/Hotwords.vue')\n }\n ]\n }\n ]\n }\n ] as unknown as undefined // i don't like having to do this. but i don't understand\n },\n {\n path: '*',\n name: `${i18next.t('Not Found')}`, // wrap in template cuz typescripts wants this to be for sure a string.\n meta: { title: `ModTools - ${i18next.t('Not Found')} | Freecycle` },\n component: (): Promise => import('@/views/NotFound.vue')\n }\n]\n","import Vue from 'vue'\nimport VueRouter from 'vue-router'\nimport { eventHub } from \"@/store/eventHub\";\nimport i18next from 'i18next'\nimport authcheck from '@/helpers/authcheck'\nimport { routes } from '@/router/routes'\nimport store from '@/store'\nimport wsClient from '@/helpers/wsClient'\n\nVue.use(VueRouter)\n\nimport { RouterOptions } from 'vue-router'\n\nconst routerOptions: RouterOptions = {\n mode: 'history',\n base: process.env.BASE_URL,\n routes,\n scrollBehavior () { return { x: 0, y: 0 } }\n}\n\nconst router = new VueRouter(routerOptions)\n\nrouter.beforeEach(async (to, _from, next) => {\n document.title = 'ModTools'\n\n let doNext = true\n let session = await store.getters['auth/session']\n // Authorization changes pushed to Vue by wss, so we make sure it's connected.\n if(!session || !session.authenticated || !session.wss) {\n await store.dispatch('auth/fetchSession')\n session = await store.getters['auth/session']\n } else {\n const wssAuth = await wsClient.wssAuth()\n if(wssAuth.data.status === 'authenticated') wsClient.initialize(session.user.id)\n }\n\n if(!session.wss && !session.authenticated) {\n doNext = false\n }\n\n if (doNext === true && typeof to === 'object' && to.params && typeof to.params.townName === 'string') {\n const townId = await store.getters['towns/townIdFromName'](to.params.townName)\n if(townId.length < 1) {\n doNext = false\n eventHub.$emit('triggerSnackbar', {\n color: 'warning',\n text: i18next.t('You are not a moderator of ') + to.params.townName + '. ' + i18next.t('Redirecting you to your dashboard in 4 seconds.'),\n timeout: 3000,\n undo: authcheck.loggedInRedirect,\n undoText: i18next.t('Go to dashboard')\n })\n setTimeout(() => { authcheck.loggedInRedirect() }, 3000)\n }\n }\n if(doNext)\n next()\n})\n\nconst defaultTitle = 'ModTools | Freecycle'\nrouter.afterEach((to) => {\n Vue.nextTick(() => {\n if (typeof to === 'object' && typeof to.meta === 'object')\n document.title = to.meta.title\n else document.title = defaultTitle\n })\n})\n\nexport default router\n","import Vue from 'vue'\nimport Vuetify from 'vuetify/lib/framework'\nimport '@mdi/font/css/materialdesignicons.css'\n\nVue.use(Vuetify)\n\nconst vuetify = new Vuetify({\n breakpoint: {\n thresholds: {\n xs: 0,\n sm: 340,\n md: 640,\n lg: 900\n },\n scrollBarWidth: 0\n },\n theme: {\n themes: {\n light: {\n primary: '#34b233',\n secondary: '#777',\n accent: '#ff5722',\n success: '#3adb76',\n warning: '#ffae00',\n alert: '#ec5840',\n primaryDarken: '#258025',\n wanted: '#00bcd4',\n wantedDarken: '#00838F',\n lend: '#ff9800',\n lendDarken: '#ef6c00',\n borrow: '#673AB7',\n borrowDarken: '#311B92',\n offer: '#ff5722',\n offerDarken: '#d84315',\n rejected: '#a16122',\n delete: '#dc143c',\n deleteDarken: '#800000',\n 'bg-light-gray': '#ede7de',\n 'bg-medium-gray': '#d4cfc7',\n 'bg-dark-gray': '#bab6af'\n }\n }\n }\n})\n\nexport default vuetify\n","/**\n * This module is now converted into a Vue Plugin.\n * https://vuejs.org/v2/guide/plugins.html\n */\n\n// deps\n// import lodash from 'lodash';\nimport moment from 'moment-timezone';\nimport Vue from 'vue';\n// import haversine from 'haversine';\n\ndeclare global {\n interface Window {\n language: string\n }\n}\n\nexport const FCVue = {\n install(): void {\n Vue.prototype.$bus = new Vue();\n // Vue.prototype.$lodash = lodash;\n Vue.prototype.$findOne = (haystack: string, arr: string[]) => {\n return arr.some(val => haystack.includes(val));\n };\n\n Vue.prototype.geoFormat = (lat: number, lng: number) => {\n return { lat : Number(lat), lng : Number(lng) };\n };\n\n // Vue.prototype.geoDistance = haversine;\n\n // filters\n Vue.filter('mreldate', function(date: string, time: string, timezone: string) {\n\n moment.locale(window.language); // language set in top-level fc3_components.js.\n\n if (!(time && timezone)) {\n // when no time given, fromNow sets time to 00:00:00 in machine's timezone, can result in odd relative times\n return moment.utc(date, 'YYYY-MM-DD').fromNow();\n }\n\n const dateToModify = time ? `${date} ${time}` : date;\n // We standardize to utc (how times are stored in db), as otherwise, moment will first convert the time to the server's local time\n const utc = moment.utc(dateToModify);\n\n // Then, convert to the given timezone (default_tz set on group post is on, most likely)\n return utc.tz(timezone).fromNow();\n });\n\n // this filter strips html tags from text and returns the raw text\n Vue.filter('stripTags', function(text: string) {\n const regex = /(<([^>]+)>)| |"/gim;\n return text.replace(regex, \"\");\n });\n\n // this filter is used to truncate a text and add ellipsis or a specified clamping mechanism.\n Vue.filter('truncate', function (text: string, length: number, clamp: string) {\n clamp = clamp || '...';\n length = length || 30;\n\n if (text.length <= length) return text;\n\n let tcText = text.slice(0, length - clamp.length);\n let last = tcText.length - 1;\n\n\n while (last > 0 && tcText[last] !== ' ' && tcText[last] !== clamp[0]) last -= 1;\n\n // Fix for case when text dont have any `space`\n last = last || length - clamp.length;\n\n tcText = tcText.slice(0, last);\n\n return tcText + clamp;\n });\n\n // convert a given string to lowerCase\n Vue.filter('lower', function(text: string) {\n return String(text).toLowerCase();\n });\n\n // convert string to first uppercase, rest lowercase\n Vue.filter('firstupper', function(text: string) {\n return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();\n });\n }\n};\n","import Vue from 'vue'\nimport App from './App.vue'\nimport router from '@/router'\nimport store from '@/store'\nimport vuetify from '@/plugins/vuetify'\nimport { FCVue } from '@/plugins/vue_init.ts'\nimport i18next, { TFunction } from 'i18next'\nimport i18nextConfig from '@/helpers/i18next-config'\nimport i18NextVue from 'i18next-vue'\nimport HttpApi from 'i18next-http-backend'\nrequire('./helpers/helpscout.js')\n\nimport '@/styles/scss/main.scss'\nimport '@/styles/scss/fonts.scss'\n\ntry {\n i18next.use(HttpApi)\n .init(i18nextConfig)\n .then(() => {\n\n Vue.prototype.t = Vue.prototype.$t as TFunction;\n\n interface VueTranslated extends Vue { t: TFunction }\n interface vmWindow extends Window {\n vm: VueTranslated\n }\n\n (window as vmWindow & typeof globalThis).vm = (new Vue({\n router,\n store,\n vuetify,\n render: h => h(App)\n }) as VueTranslated).$mount('#app')\n\n })\n} catch(e) {\n console.error('Unable to load translations service.', e)\n}\n\nVue.use(i18NextVue, {i18next})\n\n// FreeCycle global Vue filters from fc_common_assets\nVue.use(FCVue)\n","// Acts as a global event bus for message passing\n// between components, usage shown below:\n// import eventHub from './actual-path-here'\n// send events with eventHub.$emit('some_event', data)\n// watch for events with eventHub.$on('some_event', data => {})\n\nimport Vue from 'vue'\nexport const eventHub = new Vue()\n","import { GetterTree } from 'vuex'\nimport { UserSession } from './types'\nimport { RootState } from '@/types'\n\nexport const getters: GetterTree = {\n authenticated(state) { return state.authenticated },\n checkTimeout(state) { return state.checkTimeout },\n user(state) { return state.user },\n currentAccesses(state) { return (state.user) ? state.user.accesses.map(access => access.to) : [] },\n session(state) { return {\n authenticated: state.authenticated,\n checkTimeout: state.checkTimeout,\n language: state.language,\n user: state.user,\n wss: state.wss\n }}\n}\n","import { ActionTree } from 'vuex';\nimport { UserSession } from './types';\nimport { RootState } from '@/types';\nimport wsClient from '@/helpers/wsClient'\nimport store from '@/store'\n\nexport const actions: ActionTree = {\n async fetchSession({ commit }) {\n try {\n const response = await wsClient.authCheck()\n if (response && response.user)\n await store.dispatch('towns/fetchTowns')\n commit('sessionLoaded', response)\n } catch(error) {\n commit('sessionError', error)\n }\n }\n}\n","import { MutationTree } from 'vuex'\nimport { UserSession } from './types'\nimport { initialState } from './index'\nimport Timeout = NodeJS.Timeout;\n\nexport const mutations: MutationTree = {\n reset(state) { Object.assign(state, initialState) },\n sessionLoaded(state, payload: UserSession) {\n state.authenticated = payload.authenticated;\n state.error = false;\n state.user = payload.user;\n state.wss = payload.wss;\n },\n checkTimeout(state, payload: Timeout) {\n state.checkTimeout = payload;\n },\n sessionError(state) {\n state.authenticated = false;\n state.error = true;\n state.user = undefined;\n state.wss = false;\n }\n};\n","import { getters } from './getters'\nimport { actions } from './actions'\nimport { mutations } from './mutations'\nimport { UserSession } from './types'\n\nexport const initialState: UserSession = {\n authenticated: false,\n checkTimeout: false,\n error: false,\n language: '',\n user: undefined,\n wss: false\n}\n\nexport const state = initialState\n\nconst namespaced = true\n\nexport default {\n namespaced,\n state,\n getters,\n actions,\n mutations\n}\n","import { GetterTree } from 'vuex'\nimport { ModuleState } from './types'\nimport { RootState } from '@/types'\n\nexport const getters: GetterTree = {\n items(state) { return state.items }\n}\n","export const basePath = 'api/moderator/preferences'\n\nexport interface Item {\n id: number;\n user_id: number;\n group_id: number;\n results_per_page: number;\n send_email_on_member_messages: boolean;\n send_email_on_pending_members: boolean;\n send_email_on_pending_posts: boolean;\n}\n\nexport interface ModuleState {\n items: Item[];\n}\n","import { ActionTree } from 'vuex';\nimport { basePath, Item, ModuleState } from './types';\nimport { RootState } from '@/types';\nimport { API, handleError } from '@/helpers/axios'\n\nexport const actions: ActionTree = {\n async create({ commit }, item: Item) {\n try {\n const response = await API.post(`${basePath}/create`, item)\n if (response.status === 200) commit('handleResponse', { items: response.data })\n }\n catch(error) { handleError(error) }\n },\n async delete({ dispatch }, itemId: number) {\n try {\n const response = await API.post(`${basePath}/delete`, itemId)\n if (response.status === 200) dispatch('fetch')\n }\n catch(error) { handleError(error) }\n },\n async fetch({ commit }) {\n try {\n const response = await API.get(`${basePath}`)\n if (response.status === 200) commit('handleResponse', { items: response.data })\n }\n catch(error) { handleError(error) }\n },\n async update({ dispatch }, item: Item) {\n try {\n const response = await API.post(`${basePath}/update`, item)\n if (response.status === 200) dispatch('fetch')\n }\n catch(error) { handleError(error) }\n }\n}\n","import { MutationTree } from 'vuex'\nimport { Item, ModuleState } from './types'\nimport { initialState } from './index'\n\nexport const mutations: MutationTree = {\n handleResponse(state, payload: { items: Item[] }) {\n state.items = payload.items;\n },\n reset(state) { Object.assign(state, initialState) },\n};\n","import { getters } from './getters'\nimport { actions } from './actions'\nimport { mutations } from './mutations'\nimport { ModuleState } from './types'\n\nexport const initialState: ModuleState = {\n items: []\n}\n\nexport const state = initialState\n\nconst namespaced = true\n\nexport default {\n namespaced,\n state,\n getters,\n actions,\n mutations\n}\n","import { GetterTree } from 'vuex'\nimport { ModuleState, PostStatus } from './types'\nimport { RootState } from '@/types'\n\nexport const getters: GetterTree = {\n post(state) { return state.post },\n posts(state) { return state.posts },\n postsByTownByUserByStatus(state, status: PostStatus) { return state.postsByTownByUserByStatus[status] },\n postsByTownByUserPending(state) { return state.postsByTownByUserPending },\n postsByTownByUserActive(state) { return state.postsByTownByUserActive },\n postsByTownByUserInactive(state) { return state.postsByTownByUserInactive }\n}\n","export const basePath = 'api'\n\nexport interface Post {\n id: number | null;\n userId: number;\n subject: string;\n location: string;\n description: string;\n isApproved: boolean;\n isDeleted: boolean;\n isOpen: boolean;\n isRejected: boolean;\n rejectReason: string;\n date: string;\n time: string;\n type: {\n typeId: number;\n const: string;\n name: string;\n };\n group: {\n id: number;\n name: string;\n country: {\n id: number;\n name: string;\n };\n latitude: number;\n longitude: number;\n timezone: string;\n uniqueName?: string;\n };\n images: [];\n tags: [];\n shared: [];\n static: string | null;\n}\n\nexport interface SearchResult {\n \"@timestamp\": string;\n \"@version\": string;\n group_id: number;\n group_name: string;\n group_uniquename: string;\n has_image: number;\n index_id: string;\n is_approved: number;\n is_deleted: number;\n is_open: number;\n is_rejected: number;\n post_date: string;\n post_datetime: string;\n post_description: string;\n post_id: number;\n post_location: string;\n post_subject: string;\n post_type: number;\n post_type_name: string;\n type: string;\n user_id: number;\n username: string;\n}\n\nexport interface NewPost {\n userId: number;\n subject: string;\n location: string;\n description: string;\n type: number;\n lendDuration: string | null;\n town: number;\n tags: [];\n images: [];\n user: {\n user_id: number;\n username: string;\n };\n}\n\nexport interface ModuleState {\n post?: Post;\n posts: Post[];\n postsByTownByUserByStatus: {\n active?: Post[];\n inactive?: Post[];\n pending?: Post[];\n };\n postsByTownByUserPending: Post[];\n postsByTownByUserActive: Post[];\n postsByTownByUserInactive: Post[];\n postsByTownPending: Post[]; // Support multiple towns\n}\n\nexport type PostStatus = 'active'|'inactive'|'pending'\n","import { ActionTree } from 'vuex'\nimport { basePath, ModuleState } from './types'\nimport { RootState } from '@/types'\nimport { NewPost } from './types'\nimport { API, handleError } from '@/helpers/axios'\nimport { eventHub } from '@/store/eventHub'\nimport { Post } from '@/store/posts/types'\nimport i18next from 'i18next'\nimport i18nextConfig from '@/helpers/i18next-config'\n\ni18next.init(i18nextConfig)\n\ninterface PostTownUserIds {\n bulk: boolean | null;\n postId: number;\n townId: number;\n userId: number;\n}\n\ninterface PostsBulkDelete {\n townId: number;\n posts: {\n id: number;\n userId: number;\n }[];\n}\n\ninterface PostsBulk {\n townId: number;\n posts: {\n id: number;\n user: { id: number; };\n }[];\n}\n\ninterface Rejection {\n postId: number;\n userId: number;\n townId: number;\n reason: string;\n comment: string;\n}\n\nexport interface TownUserStatus {\n townId: number;\n userId: number;\n status: string;\n limit: number | null;\n townPreferred?: boolean;\n}\n\nexport const actions: ActionTree = {\n async fetchBy({ commit }, { id, townId }: { id: number; townId: number } ) {\n try {\n const response = await API.get(`${basePath}/group/${townId}/posts/${id}`)\n if (response.status === 200) {\n commit('handleResponseFetchBy', response.data)\n return response.data\n } else {\n console.error(response)\n throw new Error('Error fetching post.')\n }\n }\n catch(error) { handleError(error) }\n },\n async fetchTownUserByStatus({ commit }, { townId, userId, status, limit, townPreferred = false }: TownUserStatus) {\n try {\n const limitNumber = typeof limit === 'number' ? limit : 2\n const response = await API\n .get(`${basePath}/group/${townId}/members/${userId}/posts/${status}`,\n { params: { limit: limitNumber, townPreferred } })\n\n if (response.status === 200) {\n switch (status) {\n case 'pending':\n commit('handleResponseByTownByUserPending', response.data.posts)\n break\n case 'active':\n commit('handleResponseByTownByUserActive', response.data.posts)\n break\n case 'inactive':\n commit('handleResponseByTownByUserInactive', response.data.posts)\n break\n }\n return response.data.posts\n }\n }\n catch(error) { handleError(error) }\n\t},\n async fetchPendingByTown({ commit }, townId: number) {\n try {\n const response = await API.get(`${basePath}/group/${townId}/posts/pending`)\n if (response.status === 200) {\n commit('handleFetchPendingByTownResponse', response.data)\n return response.data\n }\n }\n catch(error) { handleError(error) }\n\t},\n async approve({ dispatch }, { postId, townId, userId }: PostTownUserIds) {\n try {\n const response = await API.post(`${basePath}/group/${townId}/posts/approve`, { postId, userId })\n\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'success',\n text: i18next.t(`Approved post.`),\n undo: () => dispatch('unApprove', { postId, userId, townId })\n })\n }\n return response.data\n }\n catch(error) { handleError(error) }\n },\n async bulkApprove({ dispatch }, { townId, posts }: PostsBulk) {\n try {\n const response = await API.post(`${basePath}/group/${townId}/posts/bulk/approve`, { posts })\n\n if(response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'success',\n text: posts.length + i18next.t(` posts approved.`),\n undo: () => dispatch('bulkUnApprove', { townId, posts })\n })\n }\n return response.data\n }\n catch(error) { handleError(error) }\n },\n async unApprove(_, { postId, townId, userId }: PostTownUserIds) {\n try {\n return await API.post(`${basePath}/group/${townId}/posts/unapprove`, { postId, userId })\n }\n catch(error) { handleError(error) }\n },\n async bulkUnApprove(_, { posts, townId }: PostsBulk) {\n try {\n return await API.post(`${basePath}/group/${townId}/posts/bulk/unapprove`, { posts })\n }\n catch(error) { handleError(error) }\n },\n async create({ dispatch }, { userId, subject, description, type, town, lendDuration, location, images }: NewPost) {\n try {\n const response = await API.post(`${basePath}/group/${town}/posts/create`,\n { userId, subject, description, type, town, lendDuration, location, images })\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'success',\n text: `${i18next.t('Created post')} ${subject}.`,\n undo: () => dispatch('unReject', { postId: response.data, userId, town })\n })\n }\n return response.data\n }\n catch(error) { handleError(error) }\n },\n async reject({ dispatch }, { postId, userId, townId, reason, comment }: Rejection) {\n try {\n const response = await API\n .post(`${basePath}/group/${townId}/posts/${postId}/reject`, { reason, comment, userId })\n\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'warning',\n text: i18next.t(`Rejected post.`),\n undo: () => dispatch('unReject', { postId, userId, townId })\n })\n }\n }\n catch(error) { handleError(error) }\n },\n async unReject(_, {postId, townId, userId}: PostTownUserIds) {\n try {\n return await API.post(`${basePath}/group/${townId}/posts/${postId}/unreject`, { userId })\n }\n catch(error) { handleError(error) }\n },\n async delete({ dispatch }, { bulk, postId, townId, userId }: PostTownUserIds) {\n try {\n const response = await API\n .delete(`${basePath}/group/${townId}/posts/${postId}`, { params: { userId } })\n\n if (response.status === 200) {\n if (!bulk) {\n eventHub.$emit('triggerSnackbar', {\n color: 'warning',\n text: i18next.t(`Deleted post.`),\n undo: () => dispatch('unDelete', { postId, userId, townId })\n })\n }\n }\n return response.data\n }\n catch(error) { handleError(error) }\n },\n // TODO: Finish\n async bulkDelete({ dispatch }, { posts, townId }: PostsBulkDelete) {\n try {\n const response = await API\n .delete(`${basePath}/group/${townId}/posts/bulk`, { data: { posts } })\n\n if (response.status === 200) {\n // TODO: How to handl undo?\n // eventHub.$emit('triggerSnackbar', {\n // color: 'warning',\n // text: i18next.t(`Deleted posts.`),\n // undo: () => dispatch('unDelete', { postId, userId, townId })\n // })\n\n }\n return response.data\n }\n catch(error) { handleError(error) }\n },\n async unDelete(_, { postId, townId, userId }: PostTownUserIds) {\n try {\n return await API.post(`${basePath}/group/${townId}/posts/${postId}/undelete`, { userId })\n }\n catch(error) { handleError(error) }\n },\n async update(_, { post }: { post: Post }) {\n try {\n const shimmedPost = Object.assign(post, {postType: post.type})\n return await API.post(`${basePath}/group/${post.group.id}/posts/${post.id}/update`, { post: shimmedPost })\n }\n catch (error) { handleError(error); return error }\n }\n}\n","import { MutationTree } from 'vuex';\nimport { Post, ModuleState, PostStatus } from './types'\nimport { initialState } from './index'\nimport Vue from 'vue'\n\nexport const mutations: MutationTree = {\n handleResponse(state, payload: { items: Post[] }) {\n state.posts = payload.items;\n },\n handleResponseFetchBy(state, payload: Post) {\n Vue.set(state, 'post', payload)\n },\n handleFetchPendingByTownResponse(state, payload: Post[]) {\n state.postsByTownPending = payload\n },\n handleResponseByTownByUserPending(state, payload: Post[]) {\n state.postsByTownByUserPending = payload\n },\n handleResponseByTownByUserActive(state, payload: Post[]) {\n state.postsByTownByUserActive = payload\n },\n handleResponseByTownByUserInactive(state, payload: Post[]) {\n state.postsByTownByUserInactive = payload\n },\n handleTownUserByStatusResponse(state, payload: { status: PostStatus; items: Post[] }) {\n state.postsByTownByUserByStatus[payload.status] = payload.items;\n },\n reset(state) { Object.assign(state, initialState) }\n};\n","import { getters } from './getters'\nimport { actions } from './actions'\nimport { mutations } from './mutations'\nimport { ModuleState } from './types'\n\nexport const initialState: ModuleState = {\n posts: [],\n postsByTownByUserByStatus: {},\n postsByTownByUserPending: [],\n postsByTownByUserActive: [],\n postsByTownByUserInactive: [],\n postsByTownPending: []\n}\n\nexport const state = initialState\n\nconst namespaced = true\n\nexport default {\n namespaced,\n state,\n getters,\n actions,\n mutations\n}\n","import { GetterTree } from 'vuex'\nimport { ModuleState } from './types'\nimport { RootState } from '@/types'\n\nexport const getters: GetterTree = {\n items(state) { return state.items }\n}\n","export const basePath = 'api/tags'\n\nexport interface Item {\n id: number;\n name: string;\n system: number;\n}\n\nexport interface ModuleState {\n error: boolean;\n items: Item[];\n}","import { ActionTree } from 'vuex';\nimport { basePath, ModuleState } from './types';\nimport { RootState } from '@/types';\nimport { API } from '@/helpers/axios'\n\nexport const actions: ActionTree = {\n async fetchAll({ commit }) {\n const response = await API.get(`${basePath}/all`)\n if (response.status === 200) {\n commit('handleResponse', { items: response.data })\n return response.data\n } else {\n commit('handleError', response)\n return false\n }\n }\n}","import { MutationTree } from 'vuex';\nimport { initialState } from './index'\nimport { Item, ModuleState } from './types'\n\nexport const mutations: MutationTree = {\n handleResponse(state, payload: { items: Item[] }) {\n state.error = false;\n state.items = payload.items;\n },\n handleError(state) {\n state.error = true;\n state.items = [];\n },\n reset(state) { Object.assign(state, initialState) }\n};\n","import { getters } from './getters'\nimport { actions } from './actions'\nimport { mutations } from './mutations'\nimport { ModuleState } from './types'\n\nexport const initialState: ModuleState = {\n error: false,\n items: []\n}\n\nexport const state = initialState\n\nconst namespaced = true\n\nexport default {\n namespaced,\n state,\n getters,\n actions,\n mutations\n}\n","import { GetterTree } from 'vuex'\nimport { ModuleState } from './types'\nimport { RootState } from '@/types'\n\nexport const getters: GetterTree = {\n towns(state) { return state.towns },\n townByName: (state) => (uniqueName: string) => {\n if(Object.keys(state.towns).includes(uniqueName))\n return state.towns[uniqueName]\n return {}\n },\n townById: (state) => (id: number) => {\n const maybeTown = Object.values(state.towns).find(town => town.id === id)\n return maybeTown ? maybeTown : {}\n },\n townIdFromName: (state) => (uniqueName: string) => {\n if(Object.keys(state.towns).includes(uniqueName))\n return state.towns[uniqueName].id\n return ''\n },\n townHotwords: (state) => (townId: number) => {\n if(Object.keys(state.hotwords).includes(townId.toString())) {\n return state.hotwords[townId]\n }\n return []\n },\n townNotices: (state) => (townId: number) => {\n if(Object.keys(state.notices).includes(townId.toString()))\n return state.notices[townId]\n return []\n }\n}\n","import { ActionTree } from 'vuex'\nimport { eventHub } from '@/store/eventHub'\nimport { ModuleState, Notice } from './types'\nimport { RootState } from '@/types'\nimport { API, handleError } from '@/helpers/axios'\nimport i18next from 'i18next'\nimport i18nextConfig from '@/helpers/i18next-config'\n\ni18next.init(i18nextConfig)\n\ninterface TownSettings {\n auto_mod_new_members: number;\n default_lang: string | null;\n description: string | null;\n emergency_moderation: string | null;\n members_require_approval: number;\n}\n\nexport const actions: ActionTree = {\n async addAutoNotice(_, { eventId, townId, noticeId }: { eventId: number; townId: number; noticeId: number }) {\n try {\n const response = await API.post(`api/group/${townId}/auto-notice/create`, { eventId, noticeId })\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n },\n async deleteAutoNotice(_, { eventId, noticeId, townId }: { eventId: number; noticeId: number; townId: number }) {\n try {\n const response = await API.delete(`api/group/${townId}/auto-notice/${noticeId}`, { data: { eventId } })\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'warning',\n text: i18next.t(`Removed notice.`),\n })\n }\n return response.data\n }\n catch(error) { handleError(error) }\n },\n async fetchAutoNotices(_, townId: number) {\n try {\n const response = await API.get(`api/group/${townId}/auto-notices`)\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n },\n async createNotice(_, { townId, payload }: {townId: number; payload: Notice}) {\n try {\n const response = await API.post(`api/group/${townId}/notice/create`, payload)\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n },\n async deleteNotice(_, { noticeId, townId }: { noticeId: number; townId: number }) {\n try {\n const response = await API.get(`api/group/${townId}/notice/${noticeId}/delete`)\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n },\n async fetchTowns({ commit }) {\n try {\n const response = await API.get('api/groups-by-moderator')\n if (response.status === 200) commit('handleFetchTowns', response.data)\n return\n }\n catch(error) { handleError(error) }\n },\n async fetchTownActivity(_, { itemsPerPage, page, townId }: {itemsPerPage: number; page: number; townId: number}) {\n try {\n const response = await API.get(`api/group/${townId}/activity`, { params: { itemsPerPage, page } })\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n },\n async fetchHotwords({ commit }, townId: number) {\n try {\n const response = await API.get(`api/group/${townId}/hotwords`)\n if(response.status === 200) {\n commit('handleFetchHotwords', { hotwords: response.data.hotwords_groups, townId })\n return response.data.hotwords_groups\n } else console.log('hotwords got only \"response\"', response)\n }\n catch (error) { handleError(error) }\n },\n async fetchTownInfo(_, townId: number) {\n try {\n const response = await API.get(`api/group/${townId}/info`)\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n },\n async fetchTownSettings(_, townId: number) {\n try {\n const response = await API.get(`api/group/${townId}/settings`)\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n },\n async resetTownSettings(_, townId: number) {\n try {\n const response = await API.post(`api/group/${townId}/settings/reset`)\n return response.status === 200 ? response.data : response\n }\n catch (error) { handleError(error) }\n },\n async bulkMailNotice(_, {noticeId, townId}: {noticeId: number; townId: number}) {\n try {\n const response = await API.get(`api/group/${townId}/notice/${noticeId}/bulk-send`)\n if (response.status > 299) {\n throw response\n }\n\n return response.data\n }\n catch(error) {\n handleError({ response: error, config: error.config})\n throw error;\n }\n },\n async fetchNotice(_, {noticeId, townId}: {noticeId: number; townId: number}) {\n try {\n const response = await API.get(`api/group/${townId}/notice/${noticeId}`)\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n },\n async fetchNotices({ commit }, townId: number) {\n try {\n const response = await API.get(`api/group/${townId}/notices`)\n if (response.status === 200) {\n let notices = response.data.notices.map((notice: {id: number; description: string}) => {\n return {value: notice.id, text: notice.description}\n })\n notices = [{value: 0, text: 'Custom rejection message'}].concat(notices)\n commit('handleFetchNotices', { notices, townId })\n return notices\n }\n }\n catch(error) { handleError(error) }\n },\n async fetchNoticesFull({ commit }, townId: number) {\n try {\n const response = await API.get(`api/group/${townId}/notices-full`)\n if (response.status === 200) {\n const notices = response.data.notices\n commit('handleFetchNotices', { notices, townId })\n return notices\n }\n }\n catch(error) { handleError(error) }\n },\n async updateNoticesRanking(_, {noticesRanking, townId} : {noticesRanking: [number, number][], townId: number}) {\n try {\n const response = await API.post(`api/group/${townId}/update-notices-ranking`, {noticesRanking})\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n },\n async updateNotice(_, { townId, payload }: {townId: number; payload: Notice}) {\n try {\n const response = await API.post(`api/group/${townId}/notice/${payload.id}/edit`, payload)\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n },\n async updateTown(_, { townId, payload }: {townId: number; payload: TownSettings}) {\n try {\n const response = await API.post(`api/group/${townId}/update`, payload)\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n },\n async createHotwords(_, { hotwords, townId }: { hotwords: string[]; townId: number }) {\n try {\n const response = await API.post(`api/group/${townId}/hotwords`, { hotwords, group_id: townId })\n return response.status === 200 ? response.data : response\n }\n catch (error) { handleError(error) }\n },\n async deleteHotwords(_, { hotwords, townId }: { hotwords: number[]; townId: number }) {\n const response = await API.delete(`api/group/${townId}/hotwords/${hotwords.join(',')}`)\n return response.status === 200 ? response.data : response\n },\n async bulkUnmoderateAll(_, townId: number) {\n try {\n const response = await API.get(`api/group/${townId}/bulk-unmoderate-all`)\n return response.status === 200 ? response.data : response\n }\n catch(error) { handleError(error) }\n }\n}\n","import { MutationTree } from 'vuex';\nimport { Hotword, ModuleState, Town, TownNotice } from './types'\nimport { initialState } from './index'\n\nexport const mutations: MutationTree = {\n handleError(state) {\n state.error = true;\n state.towns = {};\n },\n handleFetchHotwords(state, payload: { hotwords: Hotword[], townId: number }) {\n state.hotwords[payload.townId] = payload.hotwords\n },\n handleFetchNotices(state, payload: { notices: TownNotice[]; townId: number}) {\n state.notices = { ...state.notices, [payload.townId]: payload.notices }\n },\n handleFetchTowns(state, payload: Town[]) {\n const updatedTowns = payload.reduce((towns, town: Town) => {\n towns[town.uniqueName] = town\n return towns\n }, {} as { [key: string]: Town });\n state.towns = updatedTowns;\n state.error = false;\n },\n reset(state) { Object.assign(state, initialState) }\n}\n","import { getters } from './getters'\nimport { actions } from './actions'\nimport { mutations } from './mutations'\nimport { ModuleState } from './types'\n\nexport const initialState: ModuleState = {\n error: false,\n hotwords: {},\n notices: {},\n towns: {}\n}\n\nexport const state = initialState\n\nconst namespaced = true\n\nexport default {\n namespaced,\n state,\n getters,\n actions,\n mutations\n}\n","import { GetterTree } from 'vuex'\nimport { ModuleState } from './types'\nimport { RootState } from '@/types'\n\nexport const getters: GetterTree = {\n pending: (state) => (townId: number) => { return state.pending[townId] },\n}\n","import { ActionTree } from 'vuex'\nimport { ModuleState, TownMembership } from './types'\nimport { eventHub } from '@/store/eventHub'\nimport { handleError } from '@/helpers/axios'\nimport { RootState } from '@/types'\nimport { API } from '@/helpers/axios'\nimport i18next from 'i18next'\nimport i18nextConfig from '@/helpers/i18next-config'\n\ni18next.init(i18nextConfig)\n\nexport const actions: ActionTree = {\n async fetchPending({ commit }, townId: number) {\n try {\n const response = await API.get(`api/group/${townId}/members/pending`)\n if (response.status === 200) {\n commit('handleFetchPending', {memberships: response.data, townId})\n return response.data\n }\n }\n catch(error) { handleError(error) }\n },\n async approve({ dispatch },\n { townId, member }: { townId: number; member: TownMembership; }) {\n try {\n const response = await API.post(`api/group/${townId}/member/${member.user_id}/approve`)\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'success',\n text: (`${i18next.t('Approved')} ${member.username} ${i18next.t('to join the town')}.`),\n undo: () => dispatch('unApprove', { townId, userId: member.user_id })\n })\n return response.data\n }\n }\n catch(error) { handleError(error) }\n\t},\n async bulkApprove({ dispatch },\n { townId, members }: { townId: number; members: TownMembership[]; }) {\n try {\n const userIds = members.map(member => member.user_id).join(',')\n const response = await API.post(`api/group/${townId}/member/bulk/approve`, { userIds })\n if (response.status === 200) {\n return response.data\n }\n }\n catch(error) { handleError(error) }\n },\n async unApprove({ dispatch }, { townId, userId }: { townId: number; userId: number }) {\n try {\n return await dispatch('setPending', { townId, userId })\n }\n catch(error) { handleError(error) }\n },\n async reject({ dispatch },\n { townId, member, notice, comment }:\n { townId: number; member: TownMembership; notice: string; comment: string; }) {\n try {\n const response = await API.post(`api/group/${townId}/member/${member.user_id}/reject`, { notice, comment })\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'warning',\n text: (`${i18next.t('Rejected')} ${member.username} ${i18next.t('from joining the town')}.`),\n undo: () => dispatch('unReject', { townId, userId: member.user_id })\n })\n return response.data\n }\n }\n catch(error) { handleError(error) }\n },\n async bulkReject({ dispatch },\n { townId, members, notice, comment }:\n { townId: number; members: TownMembership[]; notice: string; comment: string; }) {\n try {\n const userIds = members.map(member => member.user_id).join(',')\n const response = await API.post(`api/group/${townId}/member/bulk/reject`, { notice, comment, userIds })\n if (response.status === 200) {\n return response.data\n }\n }\n catch(error) { handleError(error) }\n },\n async unReject({ dispatch }, { townId, userId }: { townId: number; userId: number }) {\n try {\n await dispatch('joinAndSetPending', { townId, userId })\n return await dispatch('fetchPending', townId)\n }\n catch(error) { handleError(error) }\n },\n async joinAndSetPending({ dispatch }, { townId, userId }: { townId: number; userId: number }) {\n try {\n const response = await API.get(`api/group/${townId}/members`)\n if (response.data.map((x: { user_id: number }) => x.user_id).includes(userId)) {\n const user = response.data.find((x: {user_id: number}) => x.user_id === userId)\n if (user !== undefined && !user.is_pending)\n return await dispatch('setPending', { townId, userId })\n else return\n } else {\n await API.post(`api/group/${townId}/join`, { userId })\n return dispatch('setPending', { townId, userId })\n }\n }\n catch(error) { handleError(error) }\n },\n async setPending(_, { townId, userId }: { townId: number; userId: number }) {\n try {\n const response = await API.post(`api/group/${townId}/member/${userId}/update`, { is_pending: 1, approved_by: 0 })\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'success',\n text: `${i18next.t('Set')} ${userId} ${i18next.t('to pending')}.`\n })\n return response.data\n }\n }\n catch(error) { handleError(error) }\n },\n async moderate({ dispatch },\n { townId, member }: { townId: number; member: TownMembership; }) {\n try {\n const response = await API.post(`api/group/${townId}/member/${member.user_id}/moderate`)\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'success',\n text: `${i18next.t('Set')} ${member.username} ${i18next.t('to moderated')}.`,\n undo: () => dispatch('unModerate', { townId, member })\n })\n return response.data\n }\n }\n catch(error) { handleError(error) }\n\t},\n async bulkModerate({ dispatch },\n { townId, members }: { townId: number; members: TownMembership[] }) {\n try {\n const userIds = members.map(member => member.user_id).join(',')\n const response = await API.post(`api/group/${townId}/member/bulk/moderate`, {userIds})\n if (response.status === 200) {\n return response.data\n }\n }\n catch(error) { handleError(error) }\n },\n async unModerate({ dispatch },\n { townId, member }: { townId: number; member: TownMembership; }) {\n try {\n const response = await API.post(`api/group/${townId}/member/${member.user_id}/unmoderate`)\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'success',\n text: `${i18next.t('Set')} ${member.username} ${i18next.t('to unmoderated')}.`,\n undo: () => dispatch('moderate', { townId, member })\n })\n return response.data\n }\n }\n catch(error) { handleError(error) }\n\t},\n async bulkUnmoderate({ dispatch },\n { townId, members }: { townId: number; members: TownMembership[] }) {\n try {\n const userIds = members.map(member => member.user_id).join(',')\n // we can't put all the IDs in the URL! that's why it's a post!\n const response = await API.post(`api/group/${townId}/member/bulk/unmoderate/`, { userIds })\n if (response.status === 200) {\n return response.data\n }\n }\n catch(error) { handleError(error) }\n },\n async tempModerate(_, { townId, member }: { townId: number; member: TownMembership; }) {\n try {\n const response = await API.post(`api/group/${townId}/member/${member.user_id}/temp-moderate`)\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'success',\n text: `${i18next.t('Set')} ${member.username} ${i18next.t('to temporarily moderated')}.`\n })\n return response.data\n }\n }\n catch(error) { handleError(error) }\n\t},\n async bulkTempModerate({ dispatch },\n { townId, members }: { townId: number; members: TownMembership[] }) {\n try {\n const userIds = members.map(member => member.user_id).join(',')\n const response = await API.post(`api/group/${townId}/member/bulk/temp-moderate/`, { userIds })\n if (response.status === 200) {\n return response.data\n }\n }\n catch(error) { handleError(error) }\n },\n async setEmailDeliveryPreference(_, {townId, member, deliveryPreference }: {\n townId: number;\n member: TownMembership;\n deliveryPreference: number;\n }) {\n try {\n const response = await API\n .post(`api/group/${townId}/member/${member.user_id}/set-email-delivery-preference`, { deliveryPreference })\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'success',\n text: `${i18next.t('Successfully updated email delivery preference for')} ${member.username}.`,\n timeout: 2000\n })\n return response.data\n }\n }\n catch(error) { handleError(error) }\n },\n async bulkSetEmailDeliveryPreference(_, {townId, members, deliveryPreference }: {\n townId: number;\n members: TownMembership[];\n deliveryPreference: number;\n }) {\n try {\n const userIds = members.map(member => member.user_id).join(',')\n const response = await API\n .post(`api/group/${townId}/member/bulk/set-email-delivery-preference`, { deliveryPreference, userIds })\n return response.data\n }\n catch(error) { handleError(error) }\n },\n async remove(_,\n { townId, member }:\n { townId: number; member: TownMembership }) {\n try {\n const response = await API.post(`api/group/${townId}/member/${member.user_id}/remove`)\n if (response.status === 200) {\n eventHub.$emit('triggerSnackbar', {\n color: 'alert',\n text: `${i18next.t('Removed')} ${member.username} ${i18next.t('from the town')}.`\n })\n }\n return response.data\n }\n catch(error) { handleError(error) }\n },\n async bulkRemove(_,\n { townId, members }:\n { townId: number; members: TownMembership[]; }) {\n try {\n const userIds = members.map(member => member.user_id).join(',')\n const response = await API.post(`api/group/${townId}/member/bulk/remove`, { userIds })\n return response.data\n }\n catch(error) { handleError(error) }\n },\n async changeModeratorLevel(_,\n { currentLevel, targetLevel, townId, userId }:\n { currentLevel: number; targetLevel: number; townId: number; userId: number }) {\n try {\n const response = await API.post(`api/group/${townId}/member/${userId}/mod-level`,\n { currentLevel, targetLevel })\n return response.data\n }\n catch(error) { handleError(error) }\n },\n async checkInvitees(_, invitees: string[]) {\n try {\n const response = await API.post(`api/member/check`, invitees)\n return response.data\n }\n catch(error) { handleError(error) }\n },\n async invite(_, { townId, member }: { townId: number; member: TownMembership; }) {\n try {\n const response = await API.post(`api/group/${townId}/access/invite`, {\n userId: member.user_id,\n groupId: townId\n })\n if (response.status === 200) return response.data\n }\n catch(error) { handleError(error) }\n\t}\n}\n","import { MutationTree } from 'vuex'\nimport { TownMembership, ModuleState } from './types'\nimport { initialState } from './index'\n\nexport const mutations: MutationTree = {\n handleFetchPending(state, { memberships, townId }: {memberships: TownMembership[]; townId: number}) {\n state.pending[townId] = memberships;\n },\n reset(state) { Object.assign(state, initialState) }\n}\n","import { getters } from './getters'\nimport { actions } from './actions'\nimport { mutations } from './mutations'\nimport { ModuleState } from './types'\n\nexport const initialState: ModuleState = {\n pending: {}\n}\n\nexport const state = initialState\n\nconst namespaced = true\n\nexport default {\n namespaced,\n state,\n getters,\n actions,\n mutations\n}\n","import { GetterTree } from 'vuex'\nimport { ModuleState } from './types'\nimport { RootState } from '@/types'\n\nexport const getters: GetterTree = {\n items(state) { return state.items },\n item(state) { return state.item }\n}\n","export const basePath = 'api/users'\n\ninterface AccessRecord {\n to: number;\n privilege_type_id: number;\n}\n\nexport interface Item {\n user_id: number;\n username: string;\n email: string;\n first_name: string;\n image: string;\n last_name: string;\n home_group: number;\n languages_preferred: string;\n group_memberships: {\n group_id: number;\n group: {\n group_name: string;\n yahoo_group_name: string;\n group_status_id: number;\n region: {\n region_id: number;\n region_name: string;\n country: {\n country_id: number;\n country_name: string;\n };\n };\n };\n };\n user_info: {\n signup_date: string;\n reputation: number;\n };\n accesses?: AccessRecord[]\n}\n\nexport interface ModuleState {\n items: Item[];\n item: Item;\n}\n","import { ActionTree } from 'vuex';\nimport { basePath, ModuleState } from './types';\nimport { RootState } from '@/types';\nimport { API, handleError } from '@/helpers/axios'\n\nexport const actions: ActionTree = {\n async fetchBy({ commit }, { id, accesses = false }: { id: string; accesses: boolean } ) {\n try {\n const response = await API.get(`${basePath}/${id}`, {\n params: { accesses }\n })\n if (response.status === 200) {\n commit('handleResponseFetchBy', { item: response.data })\n return response.data\n }\n }\n catch(error) { handleError(error) }\n return false\n }\n}\n","import { MutationTree } from 'vuex';\nimport { Item, ModuleState } from './types'\nimport { initialState } from './index'\n\nexport const mutations: MutationTree = {\n handleResponse(state, payload: { items: Item[] }) {\n state.items = payload.items;\n },\n handleResponseFetchBy(state, payload: { item: Item }) {\n state.item = payload.item;\n },\n reset(state) { Object.assign(state, initialState) },\n}\n","import { getters } from './getters'\nimport { actions } from './actions'\nimport { mutations } from './mutations'\nimport { Item, ModuleState } from './types'\n\nexport const initialState: ModuleState = {\n items: [],\n item: {} as Item\n}\n\nexport const state = initialState\n\nconst namespaced = true\n\nexport default {\n namespaced,\n state,\n getters,\n actions,\n mutations\n}\n","import Vue from 'vue'\nimport Vuex, { StoreOptions } from 'vuex'\nimport { RootState } from '@/types'\nimport createPersistedState from 'vuex-persistedstate'\nimport auth from '@/store/auth'\nimport moderatorPreferences from '@/store/moderator-preferences'\nimport posts from '@/store/posts'\nimport tags from '@/store/tags'\nimport towns from '@/store/towns'\nimport townMemberships from '@/store/town-memberships'\nimport users from '@/store/users'\n\nVue.use(Vuex);\n\nconst store: StoreOptions = {\n modules: {\n auth,\n moderatorPreferences,\n posts,\n tags,\n towns,\n townMemberships,\n users\n },\n plugins: [\n createPersistedState({ storage: window.sessionStorage })\n ]\n};\n\nexport default new Vuex.Store(store);\n","/* Help Scout Beacon 2.0 - https://developer.helpscout.com/beacon-2/web/javascript-api/\n\nWe no longer need options here, all managed through GUI in version\n2.0 (unless of course we want to force any options):\nhttps://developer.helpscout.com/beacon-2/web/javascript-api/#beaconconfig-formobject\n*/\n\n!function(e,t,n){function a(){const e=t.getElementsByTagName(\"script\")[0],n=t.createElement(\"script\");n.type=\"text/javascript\",n.async=!0,n.src=\"https://beacon-v2.helpscout.net\",e.parentNode.insertBefore(n,e)}if(e.Beacon=n=function(t,n,a){e.Beacon.readyQueue.push({method:t,options:n,data:a})},n.readyQueue=[],\"complete\"===t.readyState)return a();e.attachEvent?e.attachEvent(\"onload\",a):e.addEventListener(\"load\",a,!1)}(window,document,window.Beacon||function(){return false;});\nwindow.Beacon('init', 'ced77731-709d-484c-85bf-5aa0833dcc0b');\n","var map = {\n\t\"./af\": 42786,\n\t\"./af.js\": 42786,\n\t\"./ar\": 30867,\n\t\"./ar-dz\": 14130,\n\t\"./ar-dz.js\": 14130,\n\t\"./ar-kw\": 96135,\n\t\"./ar-kw.js\": 96135,\n\t\"./ar-ly\": 56440,\n\t\"./ar-ly.js\": 56440,\n\t\"./ar-ma\": 47702,\n\t\"./ar-ma.js\": 47702,\n\t\"./ar-sa\": 16040,\n\t\"./ar-sa.js\": 16040,\n\t\"./ar-tn\": 37100,\n\t\"./ar-tn.js\": 37100,\n\t\"./ar.js\": 30867,\n\t\"./az\": 31083,\n\t\"./az.js\": 31083,\n\t\"./be\": 9808,\n\t\"./be.js\": 9808,\n\t\"./bg\": 68338,\n\t\"./bg.js\": 68338,\n\t\"./bm\": 67438,\n\t\"./bm.js\": 67438,\n\t\"./bn\": 8905,\n\t\"./bn-bd\": 76225,\n\t\"./bn-bd.js\": 76225,\n\t\"./bn.js\": 8905,\n\t\"./bo\": 11560,\n\t\"./bo.js\": 11560,\n\t\"./br\": 1278,\n\t\"./br.js\": 1278,\n\t\"./bs\": 80622,\n\t\"./bs.js\": 80622,\n\t\"./ca\": 2468,\n\t\"./ca.js\": 2468,\n\t\"./cs\": 5822,\n\t\"./cs.js\": 5822,\n\t\"./cv\": 50877,\n\t\"./cv.js\": 50877,\n\t\"./cy\": 47373,\n\t\"./cy.js\": 47373,\n\t\"./da\": 24780,\n\t\"./da.js\": 24780,\n\t\"./de\": 59740,\n\t\"./de-at\": 60217,\n\t\"./de-at.js\": 60217,\n\t\"./de-ch\": 60894,\n\t\"./de-ch.js\": 60894,\n\t\"./de.js\": 59740,\n\t\"./dv\": 5300,\n\t\"./dv.js\": 5300,\n\t\"./el\": 50837,\n\t\"./el.js\": 50837,\n\t\"./en-au\": 78348,\n\t\"./en-au.js\": 78348,\n\t\"./en-ca\": 77925,\n\t\"./en-ca.js\": 77925,\n\t\"./en-gb\": 22243,\n\t\"./en-gb.js\": 22243,\n\t\"./en-ie\": 46436,\n\t\"./en-ie.js\": 46436,\n\t\"./en-il\": 47207,\n\t\"./en-il.js\": 47207,\n\t\"./en-in\": 44175,\n\t\"./en-in.js\": 44175,\n\t\"./en-nz\": 76319,\n\t\"./en-nz.js\": 76319,\n\t\"./en-sg\": 31662,\n\t\"./en-sg.js\": 31662,\n\t\"./eo\": 92915,\n\t\"./eo.js\": 92915,\n\t\"./es\": 55655,\n\t\"./es-do\": 55251,\n\t\"./es-do.js\": 55251,\n\t\"./es-mx\": 96112,\n\t\"./es-mx.js\": 96112,\n\t\"./es-us\": 71146,\n\t\"./es-us.js\": 71146,\n\t\"./es.js\": 55655,\n\t\"./et\": 5603,\n\t\"./et.js\": 5603,\n\t\"./eu\": 77763,\n\t\"./eu.js\": 77763,\n\t\"./fa\": 76959,\n\t\"./fa.js\": 76959,\n\t\"./fi\": 11897,\n\t\"./fi.js\": 11897,\n\t\"./fil\": 42549,\n\t\"./fil.js\": 42549,\n\t\"./fo\": 94694,\n\t\"./fo.js\": 94694,\n\t\"./fr\": 94470,\n\t\"./fr-ca\": 63049,\n\t\"./fr-ca.js\": 63049,\n\t\"./fr-ch\": 52330,\n\t\"./fr-ch.js\": 52330,\n\t\"./fr.js\": 94470,\n\t\"./fy\": 5044,\n\t\"./fy.js\": 5044,\n\t\"./ga\": 29295,\n\t\"./ga.js\": 29295,\n\t\"./gd\": 2101,\n\t\"./gd.js\": 2101,\n\t\"./gl\": 38794,\n\t\"./gl.js\": 38794,\n\t\"./gom-deva\": 27884,\n\t\"./gom-deva.js\": 27884,\n\t\"./gom-latn\": 23168,\n\t\"./gom-latn.js\": 23168,\n\t\"./gu\": 95349,\n\t\"./gu.js\": 95349,\n\t\"./he\": 24206,\n\t\"./he.js\": 24206,\n\t\"./hi\": 30094,\n\t\"./hi.js\": 30094,\n\t\"./hr\": 30316,\n\t\"./hr.js\": 30316,\n\t\"./hu\": 22138,\n\t\"./hu.js\": 22138,\n\t\"./hy-am\": 11423,\n\t\"./hy-am.js\": 11423,\n\t\"./id\": 29218,\n\t\"./id.js\": 29218,\n\t\"./is\": 90135,\n\t\"./is.js\": 90135,\n\t\"./it\": 90626,\n\t\"./it-ch\": 10150,\n\t\"./it-ch.js\": 10150,\n\t\"./it.js\": 90626,\n\t\"./ja\": 39183,\n\t\"./ja.js\": 39183,\n\t\"./jv\": 24286,\n\t\"./jv.js\": 24286,\n\t\"./ka\": 12105,\n\t\"./ka.js\": 12105,\n\t\"./kk\": 47772,\n\t\"./kk.js\": 47772,\n\t\"./km\": 18758,\n\t\"./km.js\": 18758,\n\t\"./kn\": 79282,\n\t\"./kn.js\": 79282,\n\t\"./ko\": 33730,\n\t\"./ko.js\": 33730,\n\t\"./ku\": 1408,\n\t\"./ku.js\": 1408,\n\t\"./ky\": 33291,\n\t\"./ky.js\": 33291,\n\t\"./lb\": 36841,\n\t\"./lb.js\": 36841,\n\t\"./lo\": 55466,\n\t\"./lo.js\": 55466,\n\t\"./lt\": 57010,\n\t\"./lt.js\": 57010,\n\t\"./lv\": 37595,\n\t\"./lv.js\": 37595,\n\t\"./me\": 39861,\n\t\"./me.js\": 39861,\n\t\"./mi\": 35493,\n\t\"./mi.js\": 35493,\n\t\"./mk\": 95966,\n\t\"./mk.js\": 95966,\n\t\"./ml\": 87341,\n\t\"./ml.js\": 87341,\n\t\"./mn\": 5115,\n\t\"./mn.js\": 5115,\n\t\"./mr\": 10370,\n\t\"./mr.js\": 10370,\n\t\"./ms\": 9847,\n\t\"./ms-my\": 41237,\n\t\"./ms-my.js\": 41237,\n\t\"./ms.js\": 9847,\n\t\"./mt\": 72126,\n\t\"./mt.js\": 72126,\n\t\"./my\": 56165,\n\t\"./my.js\": 56165,\n\t\"./nb\": 64924,\n\t\"./nb.js\": 64924,\n\t\"./ne\": 16744,\n\t\"./ne.js\": 16744,\n\t\"./nl\": 93901,\n\t\"./nl-be\": 59814,\n\t\"./nl-be.js\": 59814,\n\t\"./nl.js\": 93901,\n\t\"./nn\": 83877,\n\t\"./nn.js\": 83877,\n\t\"./oc-lnc\": 92135,\n\t\"./oc-lnc.js\": 92135,\n\t\"./pa-in\": 15858,\n\t\"./pa-in.js\": 15858,\n\t\"./pl\": 64495,\n\t\"./pl.js\": 64495,\n\t\"./pt\": 89520,\n\t\"./pt-br\": 57971,\n\t\"./pt-br.js\": 57971,\n\t\"./pt.js\": 89520,\n\t\"./ro\": 96459,\n\t\"./ro.js\": 96459,\n\t\"./ru\": 21793,\n\t\"./ru.js\": 21793,\n\t\"./sd\": 40950,\n\t\"./sd.js\": 40950,\n\t\"./se\": 10490,\n\t\"./se.js\": 10490,\n\t\"./si\": 90124,\n\t\"./si.js\": 90124,\n\t\"./sk\": 64249,\n\t\"./sk.js\": 64249,\n\t\"./sl\": 14985,\n\t\"./sl.js\": 14985,\n\t\"./sq\": 51104,\n\t\"./sq.js\": 51104,\n\t\"./sr\": 49131,\n\t\"./sr-cyrl\": 79915,\n\t\"./sr-cyrl.js\": 79915,\n\t\"./sr.js\": 49131,\n\t\"./ss\": 85893,\n\t\"./ss.js\": 85893,\n\t\"./sv\": 98760,\n\t\"./sv.js\": 98760,\n\t\"./sw\": 91172,\n\t\"./sw.js\": 91172,\n\t\"./ta\": 27333,\n\t\"./ta.js\": 27333,\n\t\"./te\": 23110,\n\t\"./te.js\": 23110,\n\t\"./tet\": 52095,\n\t\"./tet.js\": 52095,\n\t\"./tg\": 27321,\n\t\"./tg.js\": 27321,\n\t\"./th\": 9041,\n\t\"./th.js\": 9041,\n\t\"./tk\": 19005,\n\t\"./tk.js\": 19005,\n\t\"./tl-ph\": 75768,\n\t\"./tl-ph.js\": 75768,\n\t\"./tlh\": 89444,\n\t\"./tlh.js\": 89444,\n\t\"./tr\": 72397,\n\t\"./tr.js\": 72397,\n\t\"./tzl\": 28254,\n\t\"./tzl.js\": 28254,\n\t\"./tzm\": 51106,\n\t\"./tzm-latn\": 30699,\n\t\"./tzm-latn.js\": 30699,\n\t\"./tzm.js\": 51106,\n\t\"./ug-cn\": 9288,\n\t\"./ug-cn.js\": 9288,\n\t\"./uk\": 67691,\n\t\"./uk.js\": 67691,\n\t\"./ur\": 13795,\n\t\"./ur.js\": 13795,\n\t\"./uz\": 6791,\n\t\"./uz-latn\": 60588,\n\t\"./uz-latn.js\": 60588,\n\t\"./uz.js\": 6791,\n\t\"./vi\": 65666,\n\t\"./vi.js\": 65666,\n\t\"./x-pseudo\": 14378,\n\t\"./x-pseudo.js\": 14378,\n\t\"./yo\": 75805,\n\t\"./yo.js\": 75805,\n\t\"./zh-cn\": 83839,\n\t\"./zh-cn.js\": 83839,\n\t\"./zh-hk\": 55726,\n\t\"./zh-hk.js\": 55726,\n\t\"./zh-mo\": 99807,\n\t\"./zh-mo.js\": 99807,\n\t\"./zh-tw\": 74152,\n\t\"./zh-tw.js\": 74152\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 46700;","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"data-name\":\"Layer 1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 20 20\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M14.43 8.66c-2.06-4.43-3.13-6.12-6.5-6-1.2 0-.91-.87-1.83-.53S6 2.91 5 3.68c-2.58 2.15-2.34 4.14-1.12 8.89.51 2-1.24 2.1-.54 4 .51 1.41 4.23 2 8.16.55s6.41-4.35 5.9-5.76c-.7-1.91-2.1-.84-2.97-2.7zM11.07 16c-3.51 1.3-6.39.54-6.51.2-.21-.59 1.13-2.55 5.14-4s6.25-.94 6.48-.28c.14.31-1.61 2.74-5.11 4.08zm-1.13-3.2A13.14 13.14 0 006 15a2.77 2.77 0 002.75.25c1.38-.51 2.23-1.69 1.89-2.63z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 320 512\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [\"fc-logo-svg\",classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"data-name\":\"Layer 1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 184 86\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{staticClass:\"cls-1\",attrs:{\"d\":\"M0 0h52v20H0z\"}}),_c('path',{staticClass:\"cls-2\",attrs:{\"d\":\"M54.33 49.7c0 3.61 2.32 7.64 7.25 7.64a6.86 6.86 0 006.68-4.27L65.95 52a4.56 4.56 0 01-4.27 2.8c-2.56 0-4.33-2.08-4.33-5.11 0-2.86 1.69-4.81 4.21-4.81a3.56 3.56 0 013.76 3.22h2.53v-5.38h-2.54v1a6.1 6.1 0 00-4-1.38 7.18 7.18 0 00-6.98 7.36zM76.33 56.66l-1.71 4.18h-2.8v2.46h4.75l7.04-18.11h2.11v-2.47h-6.89v2.47h1.9l-3.01 7.85-3.07-7.85h1.68v-2.47h-7.04v2.47h2.38l4.66 11.47zM93.11 54.79c-2.56 0-4.33-2.08-4.33-5.11 0-2.86 1.69-4.81 4.21-4.81a3.56 3.56 0 013.76 3.22h2.53v-5.37h-2.53v1a6.1 6.1 0 00-4-1.38 7.18 7.18 0 00-7 7.4c0 3.61 2.32 7.64 7.25 7.64a6.86 6.86 0 006.68-4.27L97.39 52a4.56 4.56 0 01-4.28 2.79zM106.35 36.5H101v2.46h2.53v15.5h-2.59v2.46h7.61v-2.46h-2.2V36.5zM116.16 42.3a7.47 7.47 0 00-7.46 7.52c0 4.39 3.31 7.52 7.91 7.52a8.2 8.2 0 007.13-3.7l-2.47-1.08a5.54 5.54 0 01-4.6 2.32 4.68 4.68 0 01-4.87-4.36h11.94c0-5.21-3.64-8.22-7.58-8.22zm-4.27 6.17a4.37 4.37 0 014.33-3.91 4.84 4.84 0 014.66 3.91h-9zM86.77 77.24c-4.54 4.38-9.89 6.41-16.22 5.5a32.65 32.65 0 01-14.47-6.32c-3-2.15-5.76-4.59-8.63-6.89l.3-.48c.87.24 1.73.51 2.6.72 1.65.38 2.19-.77 2.65-1.93.53-1.38-.79-1.33-1.45-1.55-2.66-.89-5.33-1.74-8-2.42-1-.26-2.75-.42-3.15.13a5.66 5.66 0 00-.74 3.7 38.76 38.76 0 001.24 5.5c.53 2 1.09 4.08 1.71 6.4 3.52-2.5.38-5.52 1.26-8.15l1.13.94c2.73 2.25 5.37 4.63 8.22 6.73A37.51 37.51 0 0069.4 86h3.67c.65-.14 1.31-.31 2-.43 5.05-.92 11.22-5.4 12.73-9.4-.42.3-.68.73-1.03 1.07z\"}}),_c('path',{staticClass:\"cls-3\",attrs:{\"d\":\"M4.9 45.19h2.41v-2.47H4.9V39.9c0-1 .39-1.53 1.08-1.53s1 .45 1.08 1.38l2.47-.39a3.5 3.5 0 00-3.67-3.28c-2 0-3.79 1.26-3.79 4.09v2.56H0v2.47h2.08v9.27h-2v2.47h7.56v-2.48H4.9v-9.27z\"}}),_c('path',{staticClass:\"cls-3\",attrs:{\"d\":\"M13.94 45.91h-.06v-3.19H8.8v2.47h2.86v9.27h-2.8v2.47h8.7v-2.47h-3.08V50.4c0-3.25 1-5.09 4.27-5.09h1.5v-2.83h-1.83a4.81 4.81 0 00-4.48 3.43zM28.34 42.3a7.47 7.47 0 00-7.46 7.52c0 4.39 3.31 7.52 7.91 7.52a8.2 8.2 0 007.13-3.7l-2.47-1.08a5.54 5.54 0 01-4.6 2.32A4.68 4.68 0 0124 50.52h11.92c0-5.21-3.64-8.22-7.58-8.22zm-4.27 6.17a4.37 4.37 0 014.33-3.91 4.84 4.84 0 014.66 3.91h-9zM45.53 57.35a8.2 8.2 0 007.13-3.7l-2.47-1.08a5.54 5.54 0 01-4.6 2.32 4.68 4.68 0 01-4.87-4.36h11.94c0-5.21-3.64-8.21-7.58-8.21a7.47 7.47 0 00-7.46 7.52c-.01 4.38 3.3 7.51 7.91 7.51zm-.39-12.79a4.84 4.84 0 014.66 3.91h-9a4.37 4.37 0 014.34-3.91zM126.1 53.32h3.61v3.61h-3.61zM138.95 42.3a7.52 7.52 0 107.46 7.52 7.32 7.32 0 00-7.46-7.52zm0 12.34a4.53 4.53 0 01-4.45-4.81 4.48 4.48 0 118.94 0 4.54 4.54 0 01-4.52 4.81zM152.61 45.91h-.06v-3.19h-5.09v2.47h2.86v9.27h-2.8v2.47h8.7v-2.47h-3.07V50.4c0-3.25 1-5.09 4.27-5.09h1.5v-2.83h-1.84a4.81 4.81 0 00-4.47 3.43zM171.58 44.74a6.83 6.83 0 00-5-2.26c-4 0-7 3.28-7 7.55s2.92 7.31 6.92 7.31a6.69 6.69 0 005.02-2.34h.06v2.14c0 3.13-2.83 4-4.57 4a6.3 6.3 0 01-4-1.47l-1.81 2a8.58 8.58 0 005.6 1.9c3.19 0 7.61-1.5 7.61-6.59V45.19h2.56v-2.47h-5.36v2zM167 54.88c-2.62 0-4.45-2-4.45-4.9A4.58 4.58 0 01167 45.1a4.9 4.9 0 010 9.78zM10.81 22.47C15.34 18.09 20.7 16.06 27 17a32.65 32.65 0 0114.47 6.32c3 2.15 5.76 4.59 8.63 6.89l-.3.48c-.87-.24-1.73-.51-2.6-.72-1.61-.38-2.19.76-2.64 1.93-.53 1.38.79 1.33 1.45 1.55 2.66.89 5.33 1.74 8 2.42 1 .26 2.75.42 3.15-.13A5.66 5.66 0 0058 32a38.89 38.89 0 00-1.31-5.51c-.53-2-1.09-4.08-1.71-6.4-3.52 2.5-.38 5.52-1.26 8.15l-1.1-.93c-2.73-2.25-5.37-4.63-8.22-6.73a37.52 37.52 0 00-16.2-6.88h-3.69c-.65.14-1.31.31-2 .43-5.05.92-11.22 5.4-12.73 9.4a14.52 14.52 0 001.03-1.06z\"}}),_c('path',{staticClass:\"cls-4\",attrs:{\"d\":\"M16.71 8.31c.79-.31 1.08-3.52.63-4.66a2.29 2.29 0 10-4.27 1.68c.45 1.14 2.85 3.29 3.64 2.98zM9 14c.6-.6-.41-3.66-1.28-4.53a2.29 2.29 0 10-3.24 3.24C5.37 13.59 8.43 14.6 9 14zM35.65 8.31c.79.31 3.19-1.84 3.64-3A2.29 2.29 0 1035 3.65c-.43 1.14-.14 4.35.65 4.66zM47.85 12.72a2.29 2.29 0 10-3.25-3.24c-.87.87-1.88 3.93-1.28 4.53s3.68-.42 4.53-1.29zM26.18 6.42c.85 0 2.29-2.88 2.29-4.1a2.29 2.29 0 10-4.59 0c0 1.22 1.45 4.1 2.3 4.1z\"}}),_c('path',{staticClass:\"cls-3\",attrs:{\"d\":\"M182 37.25a1.1 1.1 0 00-1.28-1.07h-1.45v3.25h.73v-1h.57l.69 1h.84l-.79-1.17a1 1 0 00.69-1.01zm-1.28.52H180v-1h.7a.48.48 0 11-.02.99z\"}}),_c('path',{staticClass:\"cls-3\",attrs:{\"d\":\"M180.51 34.83a3.06 3.06 0 103.05 3.05 3.07 3.07 0 00-3.05-3.05zm0 5.78a2.72 2.72 0 112.71-2.73 2.67 2.67 0 01-2.72 2.73z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"data-name\":\"Layer 1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 20 20\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M10 0a10 10 0 1010 10A10 10 0 0010 0zm5 15h-2.19V8.47L10 12.74h-.06L7.16 8.51V15H5V5h2.37L10 9.23 12.63 5H15v10z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"data-name\":\"Layer 1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 20 20\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M2.53 5.65l6.66 3.59a1.91 1.91 0 001.61 0l6.67-3.58c.43-.23.85-1 0-1h-15c-.79.03-.38.76.06.99zm15.13 1.78L10.81 11a1.52 1.52 0 01-.81.18 1.52 1.52 0 01-.81-.18L2.34 7.43C2 7.25 2 7.46 2 7.63v6.52a1 1 0 00.88.85h14.24a1 1 0 00.88-.85V7.63c0-.17 0-.38-.34-.2z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"data-name\":\"Layer 1\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 20 20\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M14.53 14.13c-2.1-.76-2.77-1.41-2.77-2.79 0-.83.64-.56.92-2.08.12-.63.68 0 .79-1.45a.73.73 0 00-.31-.72s.16-.85.22-1.5c.08-.81-.47-2.91-3.38-2.91s-3.46 2.1-3.38 2.91c.06.65.22 1.5.22 1.5a.73.73 0 00-.31.72c.11 1.44.67.82.79 1.45.28 1.52.92 1.25.92 2.08 0 1.38-.67 2-2.77 2.79S2 15.67 2 16.21V18h16v-1.79c0-.54-1.37-1.32-3.47-2.08z\"}})])\n )\n }\n }\n ","\n module.exports = {\n functional: true,\n render(_h, _vm) {\n const { _c, _v, data, children = [] } = _vm;\n\n const {\n class: classNames,\n staticClass,\n style,\n staticStyle,\n attrs = {},\n ...rest\n } = data;\n\n return _c(\n 'svg',\n {\n class: [classNames,staticClass],\n style: [style,staticStyle],\n attrs: Object.assign({\"xmlns\":\"http://www.w3.org/2000/svg\",\"viewBox\":\"0 0 512 512\"}, attrs),\n ...rest,\n },\n children.concat([_c('path',{attrs:{\"d\":\"M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z\"}})])\n )\n }\n }\n "],"names":["authAutoCheckTimeout","init","check","user","setupAutocheck","websocketSetup","checkTimeout","store","getters","clearTimeout","newTimeout","setTimeout","refresh","commit","wsClient","wssAuth","wssAuthResp","data","status","console","error","initialize","id","i18next","language","loginRedirect","API","get","authcheck","wss","httpCodeSwitch","debug","handleError","response","config","baseURL","vueDomain","url","errorMessage","eventHub","$emit","color","text","timeout","undo","undoText","loggedInRedirect","resetStore","code","log","this","location","href","pathname","fc3MainHostname","close","redirectTarget","document","URL","Cookies","set","domain","i18nextConfig","hapiDomain","window","host","imagesDomain","process","axios","withCredentials","validateStatus","e","toString","spamcontrolUserId","mainHost","offer","taken","wanted","received","vue_app_version","require","isDevMode","loadPathDomain","hostname","findSimpleLang","Array","isArray","navigator","languages","length","hyphenIndex","indexOf","substring","i18_DEBUG","lng","fallbackLng","fallbackNS","returnEmptyString","nsSeparator","keySeparator","backend","loadPath","parseMissingKeyHandler","key","replace","c","r","Math","random","v","socket","WebSocket","basePath","authCheck","reason","sessionStorage","setItem","token","authenticated","userId","websocketClientId","getItem","newWebsocketClientId","generateUuid","sendHello","onmessage","handleMessage","onerror","onopen","event","onclose","reopenSocket","send","type","version","subs","message","msgData","JSON","parse","eventName","statusCode","payload","subscribe","path","auth","stringify","statusCheck","setInterval","readyState","OPEN","clearInterval","render","_vm","_h","$createElement","_c","_self","attrs","townsAlpha","on","enter","leave","Object","keys","towns","wssHelloReceived","staticClass","_e","staticRenderFns","model","value","callback","$$v","visible","expression","_v","_s","undoMethod","Vue","extend","name","$t","computed","smartTimeout","created","$on","trigger","methods","$vuetify","theme","themes","light","watch","val","component","VBtn","mixin","el","done","style","transition","opacity","username","email","moderatedTowns","scopedSlots","_u","fn","ref","_g","$route","includes","townsMenuLabel","townsSearchString","_l","town","uniqueName","$event","$router","push","townsFiltered","refreshTowns","params","link","class","index","split","child","childIndex","pathEnding","endsWith","title","props","components","MainLink","mapState","names","forEach","townName","accesses","filter","access","privilege","map","to","self","filterTowns","townLinks","children","needle","toLowerCase","assign","values","$store","dispatch","updateFilteredTowns","VIcon","_m","staticStyle","stopPropagation","preventDefault","openHelp","apply","arguments","date","getFullYear","FacebookIcon","TwitterIcon","Date","footerMenuItems","home","Beacon","item","logout","AlertsIcon","FreecycleLogo","MessagesIcon","ProfileIcon","mounted","initDropdowns","destroyed","menuItems","action","menus","querySelectorAll","entries","menu","querySelector","addEventListener","classList","toggle","removeEventListener","Bottom","SecondaryNav","Snackbar","Top","mixins","Transitions","lang","current","addFavicon","addVersionMetaTag","setTownsAlpha","head","getElementsByTagName","tag","createElement","setAttribute","appendChild","alphaSort","a","b","sorted","sort","VApp","script","routes","RouterView","meta","redirect","use","VueRouter","routerOptions","mode","base","scrollBehavior","x","y","router","beforeEach","_from","next","doNext","session","townId","defaultTitle","afterEach","nextTick","Vuetify","vuetify","breakpoint","thresholds","xs","sm","md","lg","scrollBarWidth","primary","secondary","accent","success","warning","alert","primaryDarken","wantedDarken","lend","lendDarken","borrow","borrowDarken","offerDarken","rejected","delete","deleteDarken","FCVue","install","prototype","$bus","$findOne","haystack","arr","some","geoFormat","lat","Number","time","timezone","moment","fromNow","dateToModify","utc","tz","regex","clamp","tcText","slice","last","String","charAt","toUpperCase","HttpApi","then","t","vm","h","App","$mount","i18NextVue","state","currentAccesses","actions","fetchSession","mutations","reset","initialState","sessionLoaded","sessionError","undefined","namespaced","items","create","post","itemId","fetch","update","handleResponse","posts","postsByTownByUserByStatus","postsByTownByUserPending","postsByTownByUserActive","postsByTownByUserInactive","fetchBy","Error","fetchTownUserByStatus","limit","townPreferred","limitNumber","fetchPendingByTown","approve","postId","bulkApprove","unApprove","_","bulkUnApprove","subject","description","lendDuration","images","reject","comment","unReject","bulk","bulkDelete","unDelete","shimmedPost","postType","group","handleResponseFetchBy","handleFetchPendingByTownResponse","postsByTownPending","handleResponseByTownByUserPending","handleResponseByTownByUserActive","handleResponseByTownByUserInactive","handleTownUserByStatusResponse","fetchAll","townByName","townById","maybeTown","find","townIdFromName","townHotwords","hotwords","townNotices","notices","addAutoNotice","eventId","noticeId","deleteAutoNotice","fetchAutoNotices","createNotice","deleteNotice","fetchTowns","fetchTownActivity","itemsPerPage","page","fetchHotwords","hotwords_groups","fetchTownInfo","fetchTownSettings","resetTownSettings","bulkMailNotice","fetchNotice","fetchNotices","notice","concat","fetchNoticesFull","updateNoticesRanking","noticesRanking","updateNotice","updateTown","createHotwords","group_id","deleteHotwords","join","bulkUnmoderateAll","handleFetchHotwords","handleFetchNotices","handleFetchTowns","updatedTowns","reduce","pending","fetchPending","memberships","member","user_id","members","userIds","bulkReject","joinAndSetPending","is_pending","setPending","approved_by","moderate","bulkModerate","unModerate","bulkUnmoderate","tempModerate","bulkTempModerate","setEmailDeliveryPreference","deliveryPreference","bulkSetEmailDeliveryPreference","remove","bulkRemove","changeModeratorLevel","currentLevel","targetLevel","checkInvitees","invitees","invite","groupId","handleFetchPending","Vuex","modules","moderatorPreferences","tags","townMemberships","users","plugins","createPersistedState","storage","n","async","src","parentNode","insertBefore","readyQueue","method","options","attachEvent","webpackContext","req","webpackContextResolve","__webpack_require__","o","resolve","module","exports","functional","classNames","rest"],"sourceRoot":""}