{"version":3,"sources":["webpack:///../../../src/mixins/transitionable/index.ts","webpack:///../../../src/components/VAlert/VAlert.ts","webpack:///../../../src/components/VGrid/VRow.ts","webpack:///../../../src/components/VDialog/VDialog.ts","webpack:///../../../src/components/VOverlay/index.ts","webpack:///../../../src/components/VForm/VForm.ts","webpack:///./src/modules/public/views/index.vue","webpack:///./src/modules/public/views/regionSelection.vue","webpack:///./src/helpers/prev-login-selection.ts","webpack:///./src/modules/public/views/regionSelection.vue?2fc7","webpack:///./src/modules/public/views/regionSelection.vue?1d84","webpack:///./src/modules/public/views/regionSelection.vue?d48f","webpack:///./src/modules/public/models/loginModel.ts","webpack:///./src/models/boolean.ts","webpack:///./src/modules/public/views/index.vue?4b20","webpack:///./src/modules/public/views/index.vue?f61c","webpack:///./src/modules/public/views/index.vue?c2e8","webpack:///../../../src/components/VGrid/VCol.ts","webpack:///./src/modules/public/models/validationRules.ts","webpack:///../../../src/components/VGrid/grid.ts","webpack:///../../../src/components/VGrid/VContainer.ts","webpack:///../../../src/components/VOverlay/VOverlay.ts","webpack:///./src/components/base/loggedInComponentBase.ts","webpack:///../../../src/components/VBtn/index.ts","webpack:///./src/modules/public/views/index.vue?22ff","webpack:///../../../src/mixins/overlayable/index.ts"],"names":["Vue","extend","name","props","mode","String","origin","transition","mixins","VSheet","Toggleable","Transitionable","border","type","validator","val","includes","closeLabel","default","coloredBorder","Boolean","dense","dismissible","closeIcon","icon","outlined","prominent","text","value","computed","__cachedBorder","this","data","staticClass","class","setBackgroundColor","computedColor","$createElement","__cachedDismissible","color","iconColor","VBtn","small","attrs","$vuetify","lang","t","on","click","isActive","VIcon","__cachedIcon","computedIcon","classes","options","call","hasColoredIcon","hasText","undefined","isDark","Themeable","created","$attrs","hasOwnProperty","breaking","methods","genWrapper","children","$slots","prepend","genContent","append","$scopedSlots","close","toggle","genAlert","role","listeners$","style","styles","directives","setColor","setTextColor","render","h","breakpoints","ALIGNMENT","makeProps","prefix","def","reduce","upperFirst","alignValidator","str","alignProps","justifyValidator","justifyProps","alignContentValidator","alignContentProps","propMap","align","Object","keys","justify","alignContent","classMap","breakpointClass","prop","className","breakpoint","replace","toLowerCase","cache","Map","functional","tag","noGutters","cacheKey","classList","get","forEach","push","set","mergeData","baseMixins","Dependent","Detachable","Overlayable","Returnable","Stackable","Activatable","ClickOutside","dark","disabled","fullscreen","light","maxWidth","Number","noClickAnimation","persistent","retainFocus","scrollable","width","activatedBy","animate","animateTimeout","stackMinZIndex","previousActiveElement","contentClass","trim","contentClasses","hasActivator","activator","watch","show","hideScroll","removeOverlay","unbind","_a","focus","showScroll","genOverlay","removed","beforeMount","$nextTick","isBooted","beforeDestroy","window","animateClick","clearTimeout","setTimeout","closeConditional","e","target","_isDestroyed","$refs","content","contains","overlay","$el","activeZIndex","getMaxZIndex","document","documentElement","add","hideOverlay","dialog","activeElement","_b","bind","addEventListener","onFocusin","removeEventListener","onClickOutside","$emit","onKeydown","keyCode","keyCodes","esc","getOpenDependents","length","getActivator","getOpenDependentElements","some","el","focusable","querySelectorAll","find","hasAttribute","matches","showLazyContent","VThemeProvider","root","getScopeIdAttrs","keydown","zIndex","ref","genTransition","genInnerContent","appear","tabindex","handler","include","transformOrigin","convertToUnit","getContentSlot","attach","genActivator","VOverlay","BindsAttrs","RegistrableProvide","provide","form","inheritAttrs","lazyValidation","readonly","inputs","watchers","errorBag","errors","values","deep","immediate","watchInput","input","watcher","$watch","$set","_uid","valid","shouldValidate","validate","filter","reset","resetErrorBag","resetValidation","register","unregister","found","i","unwatch","$delete","novalidate","attrs$","submit","showRegionSelection","_c","$event","model","callback","loginForm","expression","_vm","rules","required","passwordLength","_v","loginError","staticRenderFns","selectedRegion","logout","PrevLoginSelections","constructor","Error","prevBrand","localStorage","getItem","LocalStorageKeys","CurrentBrand","prevRegion","CurrentRegion","prevBrandName","JSON","parse","setItem","PrevBrandNameForLogin","PrevRegionForLogin","RegionSelection","LoggedInComponentBase","selectedBrand","isRegionSelectDisabled","userModule","currentUser","regionsFilteredBySelectedBrand","uniq","stores","store","brand","map","state","Region","ALL","indexOf","availableBrands","storesModule","RefreshTokenService","stopRefreshTokenTimeout","confirmSelection","regionChanged","setCurrentBrand","getRegions","mounted","setPreviousSelections","isBrandSelectVisible","getSelections","regions","matchedBrand","Component","component","LoginModel","userIdentifier","password","BooleanType","getModule","UserModule","StoresModule","LoginView","loginModel","ValidationRules","loginSuccessful","loginPending","executeLogin","storeSelections","setSelections","querySelector","result","login","username","TokenData","stringify","user","fetchUser","User","allStoresBrands","uniqBrands","uniqWith","isEqual","AvailableBrands","setAvailableBrands","isMultiStoreOwner","setCurrentStore","setCurrentRegion","err","onRegionSelectionClose","LoginCompleted","True","startRefreshTokenTimeout","articleId","$router","currentRoute","query","article","params","id","onLoginPending","onLoginError","__decorate","Watch","components","breakpointProps","offsetProps","orderProps","col","offset","order","cols","alignSelf","parent","hasColClasses","startsWith","usernameLength","passwordComplexity","pattern","test","email","phoneNumber","patterns","strong","loose","matchBE","VGrid","key","join","domProps","Grid","fluid","Array","concat","Colorable","absolute","opacity","__scrim","computedOpacity","themeClasses","$listeners","assetModalModule","AssetModalModule","newAssetModalModule","NewAssetModalModule","postModalModule","PostModalModule","stickerModalModule","StickerModalModule","uiModule","UiModule","createModule","CreateModule","createAssetModule","CreateAssetModule","createPostModule","CreatePostModule","currentStore","campaignSidebarOpen","toggleAltDrawer","drawerType","AltDrawerType","CampaignSidebar","open","isLoading","mainNavigationDrawerOpen","upcomingPostsSidebarOpen","Promise","resolve","isViewingSingleStore","getStoreChannels","storeChannels","$route","toggleAuthoriseSocialChannelsModal","overlayColor","overlayOpacity","animationFrame","createOverlay","propsData","$mount","parentNode","insertBefore","firstChild","requestAnimationFrame","getZIndex","addOnceEventListener","removeChild","$destroy","cancelAnimationFrame","scrollListener","tagName","isContentEditable","up","pageup","down","pagedown","deltaY","body","checkPath","preventDefault","hasScrollbar","nodeType","Node","ELEMENT_NODE","getComputedStyle","overflowY","scrollHeight","clientHeight","overflowX","scrollWidth","clientWidth","shouldScroll","dir","shiftKey","deltaX","delta","alreadyAtStart","alreadyAtEnd","scrollTop","scrollLeft","scrollingUp","scrollingDown","isInside","path","composedPath","selected","getSelection","anchorNode","index","smAndDown","addPassiveEventListener","passive","remove"],"mappings":"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","file":"js/chunk-cb89595a.dd60ddfe.js","sourcesContent":["import Vue from 'vue'\n\nexport default Vue.extend({\n name: 'transitionable',\n\n props: {\n mode: String,\n origin: String,\n transition: String,\n },\n})\n","// Styles\nimport './VAlert.sass'\n\n// Extensions\nimport VSheet from '../VSheet'\n\n// Components\nimport VBtn from '../VBtn'\nimport VIcon from '../VIcon'\n\n// Mixins\nimport Toggleable from '../../mixins/toggleable'\nimport Themeable from '../../mixins/themeable'\nimport Transitionable from '../../mixins/transitionable'\n\n// Utilities\nimport mixins from '../../util/mixins'\nimport { breaking } from '../../util/console'\n\n// Types\nimport { VNodeData } from 'vue'\nimport { VNode } from 'vue/types'\n\n/* @vue/component */\nexport default mixins(\n VSheet,\n Toggleable,\n Transitionable\n).extend({\n name: 'v-alert',\n\n props: {\n border: {\n type: String,\n validator (val: string) {\n return [\n 'top',\n 'right',\n 'bottom',\n 'left',\n ].includes(val)\n },\n },\n closeLabel: {\n type: String,\n default: '$vuetify.close',\n },\n coloredBorder: Boolean,\n dense: Boolean,\n dismissible: Boolean,\n closeIcon: {\n type: String,\n default: '$cancel',\n },\n icon: {\n default: '',\n type: [Boolean, String],\n validator (val: boolean | string) {\n return typeof val === 'string' || val === false\n },\n },\n outlined: Boolean,\n prominent: Boolean,\n text: Boolean,\n type: {\n type: String,\n validator (val: string) {\n return [\n 'info',\n 'error',\n 'success',\n 'warning',\n ].includes(val)\n },\n },\n value: {\n type: Boolean,\n default: true,\n },\n },\n\n computed: {\n __cachedBorder (): VNode | null {\n if (!this.border) return null\n\n let data: VNodeData = {\n staticClass: 'v-alert__border',\n class: {\n [`v-alert__border--${this.border}`]: true,\n },\n }\n\n if (this.coloredBorder) {\n data = this.setBackgroundColor(this.computedColor, data)\n data.class['v-alert__border--has-color'] = true\n }\n\n return this.$createElement('div', data)\n },\n __cachedDismissible (): VNode | null {\n if (!this.dismissible) return null\n\n const color = this.iconColor\n\n return this.$createElement(VBtn, {\n staticClass: 'v-alert__dismissible',\n props: {\n color,\n icon: true,\n small: true,\n },\n attrs: {\n 'aria-label': this.$vuetify.lang.t(this.closeLabel),\n },\n on: {\n click: () => (this.isActive = false),\n },\n }, [\n this.$createElement(VIcon, {\n props: { color },\n }, this.closeIcon),\n ])\n },\n __cachedIcon (): VNode | null {\n if (!this.computedIcon) return null\n\n return this.$createElement(VIcon, {\n staticClass: 'v-alert__icon',\n props: { color: this.iconColor },\n }, this.computedIcon)\n },\n classes (): object {\n const classes: Record = {\n ...VSheet.options.computed.classes.call(this),\n 'v-alert--border': Boolean(this.border),\n 'v-alert--dense': this.dense,\n 'v-alert--outlined': this.outlined,\n 'v-alert--prominent': this.prominent,\n 'v-alert--text': this.text,\n }\n\n if (this.border) {\n classes[`v-alert--border-${this.border}`] = true\n }\n\n return classes\n },\n computedColor (): string {\n return this.color || this.type\n },\n computedIcon (): string | boolean {\n if (this.icon === false) return false\n if (typeof this.icon === 'string' && this.icon) return this.icon\n if (!['error', 'info', 'success', 'warning'].includes(this.type)) return false\n\n return `$${this.type}`\n },\n hasColoredIcon (): boolean {\n return (\n this.hasText ||\n (Boolean(this.border) && this.coloredBorder)\n )\n },\n hasText (): boolean {\n return this.text || this.outlined\n },\n iconColor (): string | undefined {\n return this.hasColoredIcon ? this.computedColor : undefined\n },\n isDark (): boolean {\n if (\n this.type &&\n !this.coloredBorder &&\n !this.outlined\n ) return true\n\n return Themeable.options.computed.isDark.call(this)\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('outline')) {\n breaking('outline', 'outlined', this)\n }\n },\n\n methods: {\n genWrapper (): VNode {\n const children = [\n this.$slots.prepend || this.__cachedIcon,\n this.genContent(),\n this.__cachedBorder,\n this.$slots.append,\n this.$scopedSlots.close\n ? this.$scopedSlots.close({ toggle: this.toggle })\n : this.__cachedDismissible,\n ]\n\n const data: VNodeData = {\n staticClass: 'v-alert__wrapper',\n }\n\n return this.$createElement('div', data, children)\n },\n genContent (): VNode {\n return this.$createElement('div', {\n staticClass: 'v-alert__content',\n }, this.$slots.default)\n },\n genAlert (): VNode {\n let data: VNodeData = {\n staticClass: 'v-alert',\n attrs: {\n role: 'alert',\n },\n on: this.listeners$,\n class: this.classes,\n style: this.styles,\n directives: [{\n name: 'show',\n value: this.isActive,\n }],\n }\n\n if (!this.coloredBorder) {\n const setColor = this.hasText ? this.setTextColor : this.setBackgroundColor\n data = setColor(this.computedColor, data)\n }\n\n return this.$createElement('div', data, [this.genWrapper()])\n },\n /** @public */\n toggle () {\n this.isActive = !this.isActive\n },\n },\n\n render (h): VNode {\n const render = this.genAlert()\n\n if (!this.transition) return render\n\n return h('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n mode: this.mode,\n },\n }, [render])\n },\n})\n","import './VGrid.sass'\n\nimport Vue, { PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst ALIGNMENT = ['start', 'end', 'center']\n\nfunction makeProps (prefix: string, def: () => PropOptions) {\n return breakpoints.reduce((props, val) => {\n props[prefix + upperFirst(val)] = def()\n return props\n }, {} as Dictionary)\n}\n\nconst alignValidator = (str: any) => [...ALIGNMENT, 'baseline', 'stretch'].includes(str)\nconst alignProps = makeProps('align', () => ({\n type: String,\n default: null,\n validator: alignValidator,\n}))\n\nconst justifyValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around'].includes(str)\nconst justifyProps = makeProps('justify', () => ({\n type: String,\n default: null,\n validator: justifyValidator,\n}))\n\nconst alignContentValidator = (str: any) => [...ALIGNMENT, 'space-between', 'space-around', 'stretch'].includes(str)\nconst alignContentProps = makeProps('alignContent', () => ({\n type: String,\n default: null,\n validator: alignContentValidator,\n}))\n\nconst propMap = {\n align: Object.keys(alignProps),\n justify: Object.keys(justifyProps),\n alignContent: Object.keys(alignContentProps),\n}\n\nconst classMap = {\n align: 'align',\n justify: 'justify',\n alignContent: 'align-content',\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: string) {\n let className = classMap[type]\n if (val == null) {\n return undefined\n }\n if (prop) {\n // alignSm -> Sm\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // .align-items-sm-center\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-row',\n functional: true,\n props: {\n tag: {\n type: String,\n default: 'div',\n },\n dense: Boolean,\n noGutters: Boolean,\n align: {\n type: String,\n default: null,\n validator: alignValidator,\n },\n ...alignProps,\n justify: {\n type: String,\n default: null,\n validator: justifyValidator,\n },\n ...justifyProps,\n alignContent: {\n type: String,\n default: null,\n validator: alignContentValidator,\n },\n ...alignContentProps,\n },\n render (h, { props, data, children }) {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `align`, `justify`, `alignContent` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n classList.push({\n 'no-gutters': props.noGutters,\n 'row--dense': props.dense,\n [`align-${props.align}`]: props.align,\n [`justify-${props.justify}`]: props.justify,\n [`align-content-${props.alignContent}`]: props.alignContent,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'row',\n class: classList,\n }),\n children\n )\n },\n})\n","// Styles\nimport './VDialog.sass'\n\n// Components\nimport { VThemeProvider } from '../VThemeProvider'\n\n// Mixins\nimport Activatable from '../../mixins/activatable'\nimport Dependent from '../../mixins/dependent'\nimport Detachable from '../../mixins/detachable'\nimport Overlayable from '../../mixins/overlayable'\nimport Returnable from '../../mixins/returnable'\nimport Stackable from '../../mixins/stackable'\n\n// Directives\nimport ClickOutside from '../../directives/click-outside'\n\n// Helpers\nimport mixins from '../../util/mixins'\nimport { removed } from '../../util/console'\nimport {\n convertToUnit,\n keyCodes,\n} from '../../util/helpers'\n\n// Types\nimport { VNode, VNodeData } from 'vue'\n\nconst baseMixins = mixins(\n Dependent,\n Detachable,\n Overlayable,\n Returnable,\n Stackable,\n Activatable,\n)\n\n/* @vue/component */\nexport default baseMixins.extend({\n name: 'v-dialog',\n\n directives: { ClickOutside },\n\n props: {\n dark: Boolean,\n disabled: Boolean,\n fullscreen: Boolean,\n light: Boolean,\n maxWidth: [String, Number],\n noClickAnimation: Boolean,\n origin: {\n type: String,\n default: 'center center',\n },\n persistent: Boolean,\n retainFocus: {\n type: Boolean,\n default: true,\n },\n scrollable: Boolean,\n transition: {\n type: [String, Boolean],\n default: 'dialog-transition',\n },\n width: [String, Number],\n },\n\n data () {\n return {\n activatedBy: null as EventTarget | null,\n animate: false,\n animateTimeout: -1,\n stackMinZIndex: 200,\n previousActiveElement: null as HTMLElement | null,\n }\n },\n\n computed: {\n classes (): object {\n return {\n [(`v-dialog ${this.contentClass}`).trim()]: true,\n 'v-dialog--active': this.isActive,\n 'v-dialog--persistent': this.persistent,\n 'v-dialog--fullscreen': this.fullscreen,\n 'v-dialog--scrollable': this.scrollable,\n 'v-dialog--animated': this.animate,\n }\n },\n contentClasses (): object {\n return {\n 'v-dialog__content': true,\n 'v-dialog__content--active': this.isActive,\n }\n },\n hasActivator (): boolean {\n return Boolean(\n !!this.$slots.activator ||\n !!this.$scopedSlots.activator\n )\n },\n },\n\n watch: {\n isActive (val) {\n if (val) {\n this.show()\n this.hideScroll()\n } else {\n this.removeOverlay()\n this.unbind()\n this.previousActiveElement?.focus()\n }\n },\n fullscreen (val) {\n if (!this.isActive) return\n\n if (val) {\n this.hideScroll()\n this.removeOverlay(false)\n } else {\n this.showScroll()\n this.genOverlay()\n }\n },\n },\n\n created () {\n /* istanbul ignore next */\n if (this.$attrs.hasOwnProperty('full-width')) {\n removed('full-width', this)\n }\n },\n\n beforeMount () {\n this.$nextTick(() => {\n this.isBooted = this.isActive\n this.isActive && this.show()\n })\n },\n\n beforeDestroy () {\n if (typeof window !== 'undefined') this.unbind()\n },\n\n methods: {\n animateClick () {\n this.animate = false\n // Needed for when clicking very fast\n // outside of the dialog\n this.$nextTick(() => {\n this.animate = true\n window.clearTimeout(this.animateTimeout)\n this.animateTimeout = window.setTimeout(() => (this.animate = false), 150)\n })\n },\n closeConditional (e: Event) {\n const target = e.target as HTMLElement\n // Ignore the click if the dialog is closed or destroyed,\n // if it was on an element inside the content,\n // if it was dragged onto the overlay (#6969),\n // or if this isn't the topmost dialog (#9907)\n return !(\n this._isDestroyed ||\n !this.isActive ||\n this.$refs.content.contains(target) ||\n (this.overlay && target && !this.overlay.$el.contains(target))\n ) && this.activeZIndex >= this.getMaxZIndex()\n },\n hideScroll () {\n if (this.fullscreen) {\n document.documentElement.classList.add('overflow-y-hidden')\n } else {\n Overlayable.options.methods.hideScroll.call(this)\n }\n },\n show () {\n !this.fullscreen && !this.hideOverlay && this.genOverlay()\n // Double nextTick to wait for lazy content to be generated\n this.$nextTick(() => {\n this.$nextTick(() => {\n if (!this.$refs.dialog?.contains(document.activeElement)) {\n this.previousActiveElement = document.activeElement as HTMLElement\n this.$refs.dialog?.focus()\n }\n this.bind()\n })\n })\n },\n bind () {\n window.addEventListener('focusin', this.onFocusin)\n },\n unbind () {\n window.removeEventListener('focusin', this.onFocusin)\n },\n onClickOutside (e: Event) {\n this.$emit('click:outside', e)\n\n if (this.persistent) {\n this.noClickAnimation || this.animateClick()\n } else {\n this.isActive = false\n }\n },\n onKeydown (e: KeyboardEvent) {\n if (e.keyCode === keyCodes.esc && !this.getOpenDependents().length) {\n if (!this.persistent) {\n this.isActive = false\n const activator = this.getActivator()\n this.$nextTick(() => activator && (activator as HTMLElement).focus())\n } else if (!this.noClickAnimation) {\n this.animateClick()\n }\n }\n this.$emit('keydown', e)\n },\n // On focus change, wrap focus to stay inside the dialog\n // https://github.com/vuetifyjs/vuetify/issues/6892\n onFocusin (e: Event) {\n if (!e || !this.retainFocus) return\n\n const target = e.target as HTMLElement\n\n if (\n !!target &&\n this.$refs.dialog &&\n // It isn't the document or the dialog body\n ![document, this.$refs.dialog].includes(target) &&\n // It isn't inside the dialog body\n !this.$refs.dialog.contains(target) &&\n // We're the topmost dialog\n this.activeZIndex >= this.getMaxZIndex() &&\n // It isn't inside a dependent element (like a menu)\n !this.getOpenDependentElements().some(el => el.contains(target))\n // So we must have focused something outside the dialog and its children\n ) {\n // Find and focus the first available element inside the dialog\n const focusable = this.$refs.dialog.querySelectorAll('button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])')\n const el = [...focusable].find(el => !el.hasAttribute('disabled') && !el.matches('[tabindex=\"-1\"]')) as HTMLElement | undefined\n el && el.focus()\n }\n },\n genContent () {\n return this.showLazyContent(() => [\n this.$createElement(VThemeProvider, {\n props: {\n root: true,\n light: this.light,\n dark: this.dark,\n },\n }, [\n this.$createElement('div', {\n class: this.contentClasses,\n attrs: {\n role: 'dialog',\n 'aria-modal': this.hideOverlay ? undefined : 'true',\n ...this.getScopeIdAttrs(),\n },\n on: { keydown: this.onKeydown },\n style: { zIndex: this.activeZIndex },\n ref: 'content',\n }, [this.genTransition()]),\n ]),\n ])\n },\n genTransition () {\n const content = this.genInnerContent()\n\n if (!this.transition) return content\n\n return this.$createElement('transition', {\n props: {\n name: this.transition,\n origin: this.origin,\n appear: true,\n },\n }, [content])\n },\n genInnerContent () {\n const data: VNodeData = {\n class: this.classes,\n attrs: {\n tabindex: this.isActive ? 0 : undefined,\n },\n ref: 'dialog',\n directives: [\n {\n name: 'click-outside',\n value: {\n handler: this.onClickOutside,\n closeConditional: this.closeConditional,\n include: this.getOpenDependentElements,\n },\n },\n { name: 'show', value: this.isActive },\n ],\n style: {\n transformOrigin: this.origin,\n },\n }\n\n if (!this.fullscreen) {\n data.style = {\n ...data.style as object,\n maxWidth: convertToUnit(this.maxWidth),\n width: convertToUnit(this.width),\n }\n }\n\n return this.$createElement('div', data, this.getContentSlot())\n },\n },\n\n render (h): VNode {\n return h('div', {\n staticClass: 'v-dialog__container',\n class: {\n 'v-dialog__container--attached':\n this.attach === '' ||\n this.attach === true ||\n this.attach === 'attach',\n },\n }, [\n this.genActivator(),\n this.genContent(),\n ])\n },\n})\n","import VOverlay from './VOverlay'\n\nexport { VOverlay }\n\nexport default VOverlay\n","// Components\nimport VInput from '../VInput/VInput'\n\n// Mixins\nimport mixins from '../../util/mixins'\nimport BindsAttrs from '../../mixins/binds-attrs'\nimport { provide as RegistrableProvide } from '../../mixins/registrable'\n\n// Helpers\nimport { VNode } from 'vue'\n\ntype ErrorBag = Record\ntype VInputInstance = InstanceType\ntype Watchers = {\n _uid: number\n valid: () => void\n shouldValidate: () => void\n}\n\n/* @vue/component */\nexport default mixins(\n BindsAttrs,\n RegistrableProvide('form')\n /* @vue/component */\n).extend({\n name: 'v-form',\n\n provide (): object {\n return { form: this }\n },\n\n inheritAttrs: false,\n\n props: {\n disabled: Boolean,\n lazyValidation: Boolean,\n readonly: Boolean,\n value: Boolean,\n },\n\n data: () => ({\n inputs: [] as VInputInstance[],\n watchers: [] as Watchers[],\n errorBag: {} as ErrorBag,\n }),\n\n watch: {\n errorBag: {\n handler (val) {\n const errors = Object.values(val).includes(true)\n\n this.$emit('input', !errors)\n },\n deep: true,\n immediate: true,\n },\n },\n\n methods: {\n watchInput (input: any): Watchers {\n const watcher = (input: any): (() => void) => {\n return input.$watch('hasError', (val: boolean) => {\n this.$set(this.errorBag, input._uid, val)\n }, { immediate: true })\n }\n\n const watchers: Watchers = {\n _uid: input._uid,\n valid: () => {},\n shouldValidate: () => {},\n }\n\n if (this.lazyValidation) {\n // Only start watching inputs if we need to\n watchers.shouldValidate = input.$watch('shouldValidate', (val: boolean) => {\n if (!val) return\n\n // Only watch if we're not already doing it\n if (this.errorBag.hasOwnProperty(input._uid)) return\n\n watchers.valid = watcher(input)\n })\n } else {\n watchers.valid = watcher(input)\n }\n\n return watchers\n },\n /** @public */\n validate (): boolean {\n return this.inputs.filter(input => !input.validate(true)).length === 0\n },\n /** @public */\n reset (): void {\n this.inputs.forEach(input => input.reset())\n this.resetErrorBag()\n },\n resetErrorBag () {\n if (this.lazyValidation) {\n // Account for timeout in validatable\n setTimeout(() => {\n this.errorBag = {}\n }, 0)\n }\n },\n /** @public */\n resetValidation () {\n this.inputs.forEach(input => input.resetValidation())\n this.resetErrorBag()\n },\n register (input: VInputInstance) {\n this.inputs.push(input)\n this.watchers.push(this.watchInput(input))\n },\n unregister (input: VInputInstance) {\n const found = this.inputs.find(i => i._uid === input._uid)\n\n if (!found) return\n\n const unwatch = this.watchers.find(i => i._uid === found._uid)\n if (unwatch) {\n unwatch.valid()\n unwatch.shouldValidate()\n }\n\n this.watchers = this.watchers.filter(i => i._uid !== found._uid)\n this.inputs = this.inputs.filter(i => i._uid !== found._uid)\n this.$delete(this.errorBag, found._uid)\n },\n },\n\n render (h): VNode {\n return h('form', {\n staticClass: 'v-form',\n attrs: {\n novalidate: true,\n ...this.attrs$,\n },\n on: {\n submit: (e: Event) => this.$emit('submit', e),\n },\n }, this.$slots.default)\n },\n})\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-container',{staticClass:\"fill-height\",attrs:{\"fluid\":\"\"}},[_c('v-row',{attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[(_vm.showRegionSelection)?_c('region-selection',{on:{\"close\":_vm.onRegionSelectionClose,\"loginCompleted\":function($event){_vm.loginSuccessful = true}}}):_vm._e(),(!_vm.showRegionSelection)?_c('v-col',{attrs:{\"cols\":\"auto\"}},[_c('v-form',{ref:\"login\",attrs:{\"autocomplete\":\"off\",\"disabled\":_vm.isActive},on:{\"submit\":function($event){$event.preventDefault();return _vm.login.apply(null, arguments)}},model:{value:(_vm.loginForm),callback:function ($$v) {_vm.loginForm=$$v},expression:\"loginForm\"}},[_c('v-card',{attrs:{\"flat\":\"\",\"min-width\":\"300\"}},[_c('v-card-text',[_c('div',{staticClass:\"text-center mb-10\"},[_c('img',{staticClass:\"logo\",attrs:{\"src\":\"/img/brand/iga-logo.svg\",\"alt\":\"IGA Logo\"}})]),_c('v-text-field',{ref:\"username\",attrs:{\"id\":\"username\",\"type\":\"text\",\"label\":\"Username\",\"name\":\"username\",\"rules\":[_vm.rules.required, _vm.rules.usernameLength]},model:{value:(_vm.loginModel.userIdentifier),callback:function ($$v) {_vm.$set(_vm.loginModel, \"userIdentifier\", $$v)},expression:\"loginModel.userIdentifier\"}}),_c('v-text-field',{ref:\"password\",attrs:{\"id\":\"password\",\"type\":\"password\",\"label\":\"Password\",\"name\":\"password\",\"rules\":[_vm.rules.required, _vm.rules.passwordLength]},model:{value:(_vm.loginModel.password),callback:function ($$v) {_vm.$set(_vm.loginModel, \"password\", $$v)},expression:\"loginModel.password\"}})],1),_c('v-card-actions',[_c('v-btn',{staticClass:\"mx-auto\",attrs:{\"color\":\"grey lighten-2\",\"type\":\"submit\",\"depressed\":\"\",\"x-large\":\"\",\"disabled\":_vm.isActive || !_vm.loginForm,\"loading\":_vm.isActive}},[_vm._v(\"Login \")])],1),_c('v-card-actions',{staticClass:\"text-center\"},[_c('v-btn',{attrs:{\"to\":{ name: 'public.forgot-password' },\"text\":\"\",\"plain\":\"\",\"width\":\"100%\"}},[_vm._v(\" Forgot password? \")])],1),(_vm.loginError)?_c('v-alert',{staticClass:\"mt-4\",attrs:{\"type\":\"error\",\"outlined\":\"\",\"icon\":\"mdi-alert-circle-outline\"}},[_vm._v(\" We could not log you in with those details. Please try again. \")]):_vm._e()],1)],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-dialog',{attrs:{\"value\":true,\"persistent\":\"\",\"max-width\":\"400\"}},[_c('v-card',{staticClass:\"px-sm-12 py-4 text-center\"},[_c('v-card-title',{staticClass:\"justify-center\"},[_c('span',{staticClass:\"text-h6 font-weight-bold\"},[_vm._v(\"Select multi-store view\")])]),_c('v-card-text',{staticClass:\"black--text\"},[_c('div',[_vm._v(\" You have logged in as a multi-store user, please choose the \"),(_vm.isBrandSelectVisible)?_c('span',[_vm._v(\"store format and \")]):_vm._e(),_vm._v(\"region to start with. You can easily change it later. \")]),_c('div',{staticClass:\"mt-6 mb-8\"},[_vm._v(\"I'd like to post in\")]),(_vm.isBrandSelectVisible)?_c('v-select',{staticClass:\"brand-select\",attrs:{\"attach\":\".brand-select\",\"menu-props\":{ top: true },\"append-icon\":\"mdi-chevron-down\",\"label\":\"Select store format\",\"no-data-text\":\"Loading store formats...\",\"persistent-placeholder\":\"\",\"items\":_vm.availableBrands,\"item-text\":\"name\",\"return-object\":\"\"},model:{value:(_vm.selectedBrand),callback:function ($$v) {_vm.selectedBrand=$$v},expression:\"selectedBrand\"}}):_vm._e(),_c('v-select',{staticClass:\"region-select\",attrs:{\"attach\":\".region-select\",\"menu-props\":{ top: true },\"append-icon\":\"mdi-chevron-down\",\"label\":\"Select region\",\"no-data-text\":\"Loading regions...\",\"persistent-placeholder\":\"\",\"items\":_vm.regions,\"disabled\":_vm.isRegionSelectDisabled},model:{value:(_vm.selectedRegion),callback:function ($$v) {_vm.selectedRegion=$$v},expression:\"selectedRegion\"}})],1),_c('v-card-actions',{staticClass:\"justify-center\"},[_c('v-btn',{attrs:{\"color\":\"red darken-1\",\"text\":\"\"},on:{\"click\":_vm.logout}},[_vm._v(\" Logout \")]),_c('v-btn',{attrs:{\"color\":\"red darken-1\",\"text\":\"\",\"disabled\":!_vm.selectedRegion || !_vm.selectedBrand},on:{\"click\":_vm.confirmSelection}},[_vm._v(\" Confirm \")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { Brand, BrandName } from '@/models/stores/brands';\r\nimport { Region } from '@/models/stores/regions';\r\nimport { LocalStorageKeys } from '@/constants';\r\n\r\n// keep brand, region before clear to ease next login\r\nexport default class PrevLoginSelections {\r\n constructor() {\r\n if (this instanceof PrevLoginSelections) {\r\n throw Error('A static class cannot be instantiated.');\r\n }\r\n }\r\n\r\n static prevBrand: string | null = null;\r\n static prevRegion: Region | null = null;\r\n static prevBrandName: BrandName | null = null;\r\n\r\n static storeSelections() {\r\n this.prevBrand = localStorage.getItem(LocalStorageKeys.CurrentBrand);\r\n this.prevRegion = localStorage.getItem(\r\n LocalStorageKeys.CurrentRegion\r\n ) as Region | null;\r\n }\r\n\r\n static setSelections() {\r\n if (this.prevBrand) {\r\n this.prevBrandName = (JSON.parse(this.prevBrand) as Brand).name;\r\n localStorage.setItem(\r\n LocalStorageKeys.PrevBrandNameForLogin,\r\n this.prevBrandName\r\n );\r\n }\r\n if (this.prevRegion) {\r\n localStorage.setItem(\r\n LocalStorageKeys.PrevRegionForLogin,\r\n this.prevRegion\r\n );\r\n }\r\n }\r\n\r\n static getSelections() {\r\n this.prevBrandName = localStorage.getItem(\r\n LocalStorageKeys.PrevBrandNameForLogin\r\n ) as BrandName;\r\n\r\n this.prevRegion = localStorage.getItem(\r\n LocalStorageKeys.PrevRegionForLogin\r\n ) as Region;\r\n\r\n return {\r\n prevRegion: this.prevRegion,\r\n prevBrandName: this.prevBrandName\r\n };\r\n }\r\n}\r\n","\r\nimport { Component } from 'vue-property-decorator';\r\nimport { LoggedInComponentBase } from '@/components/base/loggedInComponentBase';\r\nimport RefreshTokenService from '@/services/refreshTokenService';\r\nimport PrevLoginSelections from '@/helpers/prev-login-selection';\r\nimport { uniq } from 'lodash';\r\n\r\n// types\r\nimport { Region } from '@/models/stores/regions';\r\nimport { Brand } from '@/models/stores/brands';\r\n\r\n@Component({ name: 'RegionSelection' })\r\nexport default class RegionSelection extends LoggedInComponentBase {\r\n public selectedRegion: Region | null = null;\r\n public selectedBrand: Brand | null = null;\r\n public isRegionSelectDisabled: boolean = false;\r\n\r\n public get regions(): Region[] {\r\n if (!this.userModule.currentUser) return [];\r\n const regionsFilteredBySelectedBrand = uniq(\r\n this.userModule\r\n .currentUser!.stores.filter(store => {\r\n if (this.selectedBrand === null) return true;\r\n return this.selectedBrand.name === store.brand.name;\r\n })\r\n .map(store => store.state)\r\n );\r\n\r\n if (regionsFilteredBySelectedBrand.length > 1) {\r\n regionsFilteredBySelectedBrand.push(Region.ALL);\r\n this.isRegionSelectDisabled = false;\r\n\r\n // check selection region is within brand\r\n if (this.selectedRegion !== null) {\r\n if (\r\n regionsFilteredBySelectedBrand.indexOf(this.selectedRegion) === -1\r\n ) {\r\n this.selectedRegion = null;\r\n }\r\n }\r\n } else {\r\n // select only option\r\n this.selectedRegion = regionsFilteredBySelectedBrand[0];\r\n this.isRegionSelectDisabled = true;\r\n }\r\n\r\n return regionsFilteredBySelectedBrand;\r\n }\r\n\r\n public get isBrandSelectVisible(): boolean {\r\n return this.availableBrands.length > 1;\r\n }\r\n\r\n public get availableBrands(): Brand[] {\r\n return this.storesModule.availableBrands;\r\n }\r\n\r\n public logout(): void {\r\n this.userModule.logout();\r\n RefreshTokenService.stopRefreshTokenTimeout();\r\n this.$emit('close');\r\n }\r\n\r\n public confirmSelection(): void {\r\n this.storesModule.regionChanged(this.selectedRegion!);\r\n this.storesModule.setCurrentBrand(this.selectedBrand!);\r\n this.$emit('loginCompleted');\r\n }\r\n\r\n created(): void {\r\n this.storesModule.getRegions();\r\n }\r\n\r\n mounted() {\r\n this.setPreviousSelections();\r\n\r\n if (!this.isBrandSelectVisible) {\r\n // update selectedBrand with the only available brand\r\n this.selectedBrand = this.availableBrands[0];\r\n }\r\n }\r\n\r\n private setPreviousSelections() {\r\n const { prevRegion, prevBrandName } = PrevLoginSelections.getSelections();\r\n if (prevRegion && this.regions.includes(prevRegion)) {\r\n this.selectedRegion = prevRegion;\r\n }\r\n if (prevBrandName) {\r\n const matchedBrand: Brand | undefined = this.availableBrands.find(\r\n brand => brand.name === prevBrandName\r\n );\r\n if (matchedBrand) this.selectedBrand = matchedBrand;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./regionSelection.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./regionSelection.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./regionSelection.vue?vue&type=template&id=730d6a3e&\"\nimport script from \"./regionSelection.vue?vue&type=script&lang=ts&\"\nexport * from \"./regionSelection.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export class LoginModel {\r\n public userIdentifier: string = '';\r\n public password: string = '';\r\n}\r\n","export enum BooleanType {\r\n True = 'true',\r\n Fales = 'false'\r\n}\r\n","\r\nimport { Vue, Component, Watch } from 'vue-property-decorator';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport { UserModule, StoresModule } from '@/store';\r\nimport RefreshTokenService from '@/services/refreshTokenService';\r\nimport { uniqWith, isEqual } from 'lodash';\r\nimport RegionSelection from './regionSelection.vue';\r\nimport PrevLoginSelections from '@/helpers/prev-login-selection';\r\n\r\n// types\r\nimport { LoginModel } from '../models/loginModel';\r\nimport { ValidationRules } from '../models/validationRules';\r\nimport { BooleanType } from '@/models/boolean';\r\nimport { LocalStorageKeys } from '@/constants';\r\n\r\nconst userModule = getModule(UserModule);\r\nconst storesModule = getModule(StoresModule);\r\n\r\n@Component({\r\n components: { RegionSelection },\r\n})\r\nexport default class LoginView extends Vue {\r\n public loginForm = true;\r\n public loginModel: LoginModel = new LoginModel();\r\n public rules: ValidationRules = new ValidationRules();\r\n public loginError = false;\r\n public loginSuccessful = false;\r\n private loginPending = false;\r\n public showRegionSelection = false;\r\n public isActive = false;\r\n\r\n public async login() {\r\n await this.executeLogin();\r\n }\r\n\r\n created() {\r\n // keep brand, region before clear to ease next login\r\n PrevLoginSelections.storeSelections();\r\n\r\n // clears localstorage\r\n userModule.logout();\r\n\r\n PrevLoginSelections.setSelections();\r\n }\r\n\r\n mounted() {\r\n // This is to fix an issue with browser autofill that doesn't trigger the\r\n // active state of the inputs and results in username/password overlapping\r\n // the placeholder text.\r\n document\r\n .querySelector(\"[for='username']\")\r\n ?.classList.add('v-label--active');\r\n document\r\n .querySelector(\"[for='password']\")\r\n ?.classList.add('v-label--active');\r\n }\r\n\r\n private async executeLogin(): Promise {\r\n this.loginPending = true;\r\n\r\n try {\r\n const result = await userModule.login({\r\n username: this.loginModel.userIdentifier,\r\n password: this.loginModel.password,\r\n });\r\n\r\n localStorage.setItem(LocalStorageKeys.TokenData, JSON.stringify(result));\r\n\r\n const user = await userModule.fetchUser({\r\n username: this.loginModel.userIdentifier,\r\n password: this.loginModel.password,\r\n });\r\n\r\n localStorage.setItem(LocalStorageKeys.User, JSON.stringify(user));\r\n\r\n const allStoresBrands = user.stores.map((store) => store.brand);\r\n const uniqBrands = uniqWith(allStoresBrands, isEqual);\r\n localStorage.setItem(\r\n LocalStorageKeys.AvailableBrands,\r\n JSON.stringify(uniqBrands)\r\n );\r\n storesModule.setAvailableBrands(uniqBrands);\r\n\r\n // Multi-store owners (MSO) will be prompt to select a region after logging in\r\n if (userModule.isMultiStoreOwner) {\r\n this.showRegionSelection = true;\r\n } else {\r\n this.loginSuccessful = true;\r\n userModule.setCurrentStore(user.stores[0]);\r\n storesModule.setCurrentRegion(user.stores[0].state);\r\n storesModule.setCurrentBrand(uniqBrands[0]);\r\n }\r\n } catch (err) {\r\n this.loginError = true;\r\n }\r\n }\r\n\r\n public get rossLoginLink(): string {\r\n return `${process.env.VUE_APP_API_ENDPOINT_PROXY}/sso/login`;\r\n }\r\n\r\n public onRegionSelectionClose() {\r\n this.showRegionSelection = false;\r\n this.loginModel.password = '';\r\n }\r\n\r\n @Watch('loginSuccessful')\r\n private async onLoginSucceeded(): Promise {\r\n if (this.loginSuccessful) {\r\n this.loginError = false;\r\n this.loginPending = false;\r\n localStorage.setItem(LocalStorageKeys.LoginCompleted, BooleanType.True);\r\n RefreshTokenService.startRefreshTokenTimeout();\r\n\r\n // potential article redirect\r\n const articleId = this.$router.currentRoute.query?.article;\r\n if (typeof articleId === 'string') {\r\n await this.$router.push({\r\n name: 'helpAndFaqs.articleDetail',\r\n params: { id: articleId },\r\n });\r\n } else {\r\n await this.$router.push({ name: 'home.root' });\r\n }\r\n }\r\n }\r\n\r\n @Watch('loginPending')\r\n private onLoginPending(): void {\r\n if (this.loginPending) {\r\n this.loginError = false;\r\n this.loginSuccessful = false;\r\n }\r\n }\r\n\r\n @Watch('loginError')\r\n private onLoginError(): void {\r\n if (this.loginError) {\r\n this.loginPending = false;\r\n this.loginSuccessful = false;\r\n }\r\n }\r\n}\r\n","import mod from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/cache-loader/dist/cjs.js??ref--15-0!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--15-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3a634462&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=3a634462&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import './VGrid.sass'\n\nimport Vue, { VNode, PropOptions } from 'vue'\nimport mergeData from '../../util/mergeData'\nimport { upperFirst } from '../../util/helpers'\n\n// no xs\nconst breakpoints = ['sm', 'md', 'lg', 'xl']\n\nconst breakpointProps = (() => {\n return breakpoints.reduce((props, val) => {\n props[val] = {\n type: [Boolean, String, Number],\n default: false,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst offsetProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['offset' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst orderProps = (() => {\n return breakpoints.reduce((props, val) => {\n props['order' + upperFirst(val)] = {\n type: [String, Number],\n default: null,\n }\n return props\n }, {} as Dictionary)\n})()\n\nconst propMap = {\n col: Object.keys(breakpointProps),\n offset: Object.keys(offsetProps),\n order: Object.keys(orderProps),\n}\n\nfunction breakpointClass (type: keyof typeof propMap, prop: string, val: boolean | string | number) {\n let className = type\n if (val == null || val === false) {\n return undefined\n }\n if (prop) {\n const breakpoint = prop.replace(type, '')\n className += `-${breakpoint}`\n }\n // Handling the boolean style prop when accepting [Boolean, String, Number]\n // means Vue will not convert to sm: true for us.\n // Since the default is false, an empty string indicates the prop's presence.\n if (type === 'col' && (val === '' || val === true)) {\n // .col-md\n return className.toLowerCase()\n }\n // .order-md-6\n className += `-${val}`\n return className.toLowerCase()\n}\n\nconst cache = new Map()\n\nexport default Vue.extend({\n name: 'v-col',\n functional: true,\n props: {\n cols: {\n type: [Boolean, String, Number],\n default: false,\n },\n ...breakpointProps,\n offset: {\n type: [String, Number],\n default: null,\n },\n ...offsetProps,\n order: {\n type: [String, Number],\n default: null,\n },\n ...orderProps,\n alignSelf: {\n type: String,\n default: null,\n validator: (str: any) => ['auto', 'start', 'end', 'center', 'baseline', 'stretch'].includes(str),\n },\n tag: {\n type: String,\n default: 'div',\n },\n },\n render (h, { props, data, children, parent }): VNode {\n // Super-fast memoization based on props, 5x faster than JSON.stringify\n let cacheKey = ''\n for (const prop in props) {\n cacheKey += String((props as any)[prop])\n }\n let classList = cache.get(cacheKey)\n\n if (!classList) {\n classList = []\n // Loop through `col`, `offset`, `order` breakpoint props\n let type: keyof typeof propMap\n for (type in propMap) {\n propMap[type].forEach(prop => {\n const value: string | number | boolean = (props as any)[prop]\n const className = breakpointClass(type, prop, value)\n if (className) classList!.push(className)\n })\n }\n\n const hasColClasses = classList.some(className => className.startsWith('col-'))\n\n classList.push({\n // Default to .col if no other col-{bp}-* classes generated nor `cols` specified.\n col: !hasColClasses || !props.cols,\n [`col-${props.cols}`]: props.cols,\n [`offset-${props.offset}`]: props.offset,\n [`order-${props.order}`]: props.order,\n [`align-self-${props.alignSelf}`]: props.alignSelf,\n })\n\n cache.set(cacheKey, classList)\n }\n\n return h(props.tag, mergeData(data, { class: classList }), children)\n },\n})\n","export class ValidationRules {\r\n public required: ValidationRule = value => !!value || 'Required.';\r\n\r\n public usernameLength: ValidationRule = value =>\r\n (value.length >= 3 && value.length <= 50) ||\r\n 'Required between 3-50 characters';\r\n\r\n public passwordLength: ValidationRule = value =>\r\n (value.length >= 8 && value.length <= 255) ||\r\n 'Required between 8-255 characters';\r\n\r\n public passwordComplexity: ValidationRule = value => {\r\n const pattern = /^(?=.*[\\d])(?=.*[A-Z])(?=.*[a-z])[\\w!@#:,<>;$%\\\\|^&?/*)(=+_{}[\\]]{8,}$/;\r\n const test = pattern.test(value);\r\n return test\r\n ? test\r\n : 'Must be at least 8 characters. Min 1 lowercase letter, min 1 uppercase letter, min 1 digit. Special characters permitted.';\r\n };\r\n\r\n public email: ValidationRule = value => {\r\n const pattern = /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\r\n return pattern.test(value) || 'Invalid e-mail.';\r\n };\r\n\r\n public phoneNumber: ValidationRule = value => {\r\n const patterns = {\r\n strong: /^0[0-8]\\d{8}$/g,\r\n loose: /^[0-9\\s]*$/,\r\n matchBE: /^(?=.*[0-9])[- +()0-9]+$/\r\n }\r\n return patterns.matchBE.test(value) || 'Invalid phone number';\r\n };\r\n}\r\n","// Types\nimport Vue, { VNode } from 'vue'\n\nexport default function VGrid (name: string) {\n /* @vue/component */\n return Vue.extend({\n name: `v-${name}`,\n\n functional: true,\n\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n },\n\n render (h, { props, data, children }): VNode {\n data.staticClass = (`${name} ${data.staticClass || ''}`).trim()\n\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n const classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n\n if (classes.length) data.staticClass += ` ${classes.join(' ')}`\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(props.tag, data, children)\n },\n })\n}\n","import './_grid.sass'\nimport './VGrid.sass'\n\nimport Grid from './grid'\n\nimport mergeData from '../../util/mergeData'\n\n/* @vue/component */\nexport default Grid('container').extend({\n name: 'v-container',\n functional: true,\n props: {\n id: String,\n tag: {\n type: String,\n default: 'div',\n },\n fluid: {\n type: Boolean,\n default: false,\n },\n },\n render (h, { props, data, children }) {\n let classes\n const { attrs } = data\n if (attrs) {\n // reset attrs to extract utility clases like pa-3\n data.attrs = {}\n classes = Object.keys(attrs).filter(key => {\n // TODO: Remove once resolved\n // https://github.com/vuejs/vue/issues/7841\n if (key === 'slot') return false\n\n const value = attrs[key]\n\n // add back data attributes like data-test=\"foo\" but do not\n // add them as classes\n if (key.startsWith('data-')) {\n data.attrs![key] = value\n return false\n }\n\n return value || typeof value === 'string'\n })\n }\n\n if (props.id) {\n data.domProps = data.domProps || {}\n data.domProps.id = props.id\n }\n\n return h(\n props.tag,\n mergeData(data, {\n staticClass: 'container',\n class: Array({\n 'container--fluid': props.fluid,\n }).concat(classes || []),\n }),\n children\n )\n },\n})\n","// Styles\nimport './VOverlay.sass'\n\n// Mixins\nimport Colorable from './../../mixins/colorable'\nimport Themeable from '../../mixins/themeable'\nimport Toggleable from './../../mixins/toggleable'\n\n// Utilities\nimport mixins from '../../util/mixins'\n\n// Types\nimport { VNode } from 'vue'\n\n/* @vue/component */\nexport default mixins(\n Colorable,\n Themeable,\n Toggleable\n).extend({\n name: 'v-overlay',\n\n props: {\n absolute: Boolean,\n color: {\n type: String,\n default: '#212121',\n },\n dark: {\n type: Boolean,\n default: true,\n },\n opacity: {\n type: [Number, String],\n default: 0.46,\n },\n value: {\n default: true,\n },\n zIndex: {\n type: [Number, String],\n default: 5,\n },\n },\n\n computed: {\n __scrim (): VNode {\n const data = this.setBackgroundColor(this.color, {\n staticClass: 'v-overlay__scrim',\n style: {\n opacity: this.computedOpacity,\n },\n })\n\n return this.$createElement('div', data)\n },\n classes (): object {\n return {\n 'v-overlay--absolute': this.absolute,\n 'v-overlay--active': this.isActive,\n ...this.themeClasses,\n }\n },\n computedOpacity (): number {\n return Number(this.isActive ? this.opacity : 0)\n },\n styles (): object {\n return {\n zIndex: this.zIndex,\n }\n },\n },\n\n methods: {\n genContent () {\n return this.$createElement('div', {\n staticClass: 'v-overlay__content',\n }, this.$slots.default)\n },\n },\n\n render (h): VNode {\n const children = [this.__scrim]\n\n if (this.isActive) children.push(this.genContent())\n\n return h('div', {\n staticClass: 'v-overlay',\n on: this.$listeners,\n class: this.classes,\n style: this.styles,\n }, children)\n },\n})\n","import Vue from 'vue';\r\nimport { getModule } from 'vuex-module-decorators';\r\nimport ApplicationUser from '@/models/auth/applicationUser';\r\nimport {\r\n AssetModalModule,\r\n NewAssetModalModule,\r\n PostModalModule,\r\n StickerModalModule,\r\n StoresModule,\r\n UiModule,\r\n CreateModule,\r\n CreatePostModule,\r\n CreateAssetModule,\r\n} from '@/store';\r\nimport { UserModule } from '@/store/userModule';\r\nimport { AltDrawerType } from '@/constants';\r\nimport { UserStore } from '@/models/users/userStore';\r\n\r\nexport abstract class LoggedInComponentBase extends Vue {\r\n protected assetModalModule = getModule(AssetModalModule);\r\n protected newAssetModalModule = getModule(NewAssetModalModule);\r\n protected postModalModule = getModule(PostModalModule);\r\n protected stickerModalModule = getModule(StickerModalModule);\r\n protected storesModule = getModule(StoresModule);\r\n protected uiModule = getModule(UiModule);\r\n protected userModule = getModule(UserModule);\r\n protected createModule = getModule(CreateModule);\r\n protected createAssetModule = getModule(CreateAssetModule);\r\n protected createPostModule = getModule(CreatePostModule);\r\n\r\n public get currentStore(): UserStore {\r\n return this.userModule.currentStore;\r\n }\r\n\r\n public get campaignSidebarOpen(): boolean {\r\n return this.uiModule.campaignSidebarOpen;\r\n }\r\n\r\n public set campaignSidebarOpen(value: boolean) {\r\n this.uiModule.toggleAltDrawer({\r\n drawerType: AltDrawerType.CampaignSidebar,\r\n open: value,\r\n });\r\n }\r\n\r\n public get isLoading(): boolean {\r\n return this.uiModule.isLoading;\r\n }\r\n\r\n public get mainNavigationDrawer(): boolean | null {\r\n return this.uiModule.mainNavigationDrawerOpen;\r\n }\r\n\r\n public get upcomingPostsSidebarOpen(): boolean | null {\r\n return this.uiModule.upcomingPostsSidebarOpen;\r\n }\r\n\r\n public get user(): ApplicationUser | null {\r\n return this.user;\r\n }\r\n\r\n /*\r\n * Check if the current store has authorised their social accounts.\r\n * If not, prompt them with a modal.\r\n * Pass if current user is an MSO and is not viewing a paricular store.\r\n */\r\n protected async checkSocialChannelsAuthorised() {\r\n /*\r\n this wait is a hack to resolve a race condition on page load where this.userModule.isViewingSingleStore is incorrect (stores haven't loaded yet?).\r\n this results in the below getStoreChannels() not being called which in turn disables buttons on recommended posts because store channels [] is empty\r\n @ 1 second the problem persists\r\n */\r\n if (this.userModule.currentStore.id === '') {\r\n await new Promise((resolve) => setTimeout(resolve, 2000));\r\n }\r\n\r\n if (!this.userModule.isViewingSingleStore) {\r\n return;\r\n }\r\n\r\n await this.storesModule.getStoreChannels(this.userModule.currentStore.id);\r\n\r\n if (\r\n this.storesModule.storeChannels.length === 0 &&\r\n this.$route.name !== 'settings.root'\r\n ) {\r\n this.storesModule.toggleAuthoriseSocialChannelsModal(true);\r\n }\r\n }\r\n}\r\n","import VBtn from './VBtn'\n\nexport { VBtn }\nexport default VBtn\n","export * from \"-!../../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=3a634462&prod&lang=scss&\"","// Components\nimport VOverlay from '../../components/VOverlay'\n\n// Utilities\nimport {\n keyCodes,\n addOnceEventListener,\n addPassiveEventListener,\n getZIndex,\n composedPath,\n} from '../../util/helpers'\n\n// Types\nimport Vue from 'vue'\n\ninterface Toggleable extends Vue {\n isActive?: boolean\n}\n\ninterface Stackable extends Vue {\n activeZIndex: number\n}\n\ninterface options {\n absolute?: boolean\n $refs: {\n dialog?: HTMLElement\n content?: HTMLElement\n }\n}\n\n/* @vue/component */\nexport default Vue.extend().extend({\n name: 'overlayable',\n\n props: {\n hideOverlay: Boolean,\n overlayColor: String,\n overlayOpacity: [Number, String],\n },\n\n data () {\n return {\n animationFrame: 0,\n overlay: null as InstanceType | null,\n }\n },\n\n watch: {\n hideOverlay (value) {\n if (!this.isActive) return\n\n if (value) this.removeOverlay()\n else this.genOverlay()\n },\n },\n\n beforeDestroy () {\n this.removeOverlay()\n },\n\n methods: {\n createOverlay () {\n const overlay = new VOverlay({\n propsData: {\n absolute: this.absolute,\n value: false,\n color: this.overlayColor,\n opacity: this.overlayOpacity,\n },\n })\n\n overlay.$mount()\n\n const parent = this.absolute\n ? this.$el.parentNode\n : document.querySelector('[data-app]')\n\n parent && parent.insertBefore(overlay.$el, parent.firstChild)\n\n this.overlay = overlay\n },\n genOverlay () {\n this.hideScroll()\n\n if (this.hideOverlay) return\n\n if (!this.overlay) this.createOverlay()\n\n this.animationFrame = requestAnimationFrame(() => {\n if (!this.overlay) return\n\n if (this.activeZIndex !== undefined) {\n this.overlay.zIndex = String(this.activeZIndex - 1)\n } else if (this.$el) {\n this.overlay.zIndex = getZIndex(this.$el)\n }\n\n this.overlay.value = true\n })\n\n return true\n },\n /** removeOverlay(false) will not restore the scollbar afterwards */\n removeOverlay (showScroll = true) {\n if (this.overlay) {\n addOnceEventListener(this.overlay.$el, 'transitionend', () => {\n if (\n !this.overlay ||\n !this.overlay.$el ||\n !this.overlay.$el.parentNode ||\n this.overlay.value ||\n this.isActive\n ) return\n\n this.overlay.$el.parentNode.removeChild(this.overlay.$el)\n this.overlay.$destroy()\n this.overlay = null\n })\n\n // Cancel animation frame in case\n // overlay is removed before it\n // has finished its animation\n cancelAnimationFrame(this.animationFrame)\n\n this.overlay.value = false\n }\n\n showScroll && this.showScroll()\n },\n scrollListener (e: WheelEvent | KeyboardEvent) {\n if ('key' in e) {\n if (\n ['INPUT', 'TEXTAREA', 'SELECT'].includes((e.target as Element).tagName) ||\n // https://github.com/vuetifyjs/vuetify/issues/4715\n (e.target as HTMLElement).isContentEditable\n ) return\n\n const up = [keyCodes.up, keyCodes.pageup]\n const down = [keyCodes.down, keyCodes.pagedown]\n\n if (up.includes(e.keyCode)) {\n (e as any).deltaY = -1\n } else if (down.includes(e.keyCode)) {\n (e as any).deltaY = 1\n } else {\n return\n }\n }\n\n if (e.target === this.overlay ||\n (e.type !== 'keydown' && e.target === document.body) ||\n this.checkPath(e as WheelEvent)) e.preventDefault()\n },\n hasScrollbar (el?: Element) {\n if (!el || el.nodeType !== Node.ELEMENT_NODE) return false\n\n const style = window.getComputedStyle(el)\n return ((['auto', 'scroll'].includes(style.overflowY!) || el.tagName === 'SELECT') && el.scrollHeight > el.clientHeight) ||\n ((['auto', 'scroll'].includes(style.overflowX!)) && el.scrollWidth > el.clientWidth)\n },\n shouldScroll (el: Element, e: WheelEvent): boolean {\n if (el.hasAttribute('data-app')) return false\n\n const dir = e.shiftKey || e.deltaX ? 'x' : 'y'\n const delta = dir === 'y' ? e.deltaY : e.deltaX || e.deltaY\n\n let alreadyAtStart: boolean\n let alreadyAtEnd: boolean\n if (dir === 'y') {\n alreadyAtStart = el.scrollTop === 0\n alreadyAtEnd = el.scrollTop + el.clientHeight === el.scrollHeight\n } else {\n alreadyAtStart = el.scrollLeft === 0\n alreadyAtEnd = el.scrollLeft + el.clientWidth === el.scrollWidth\n }\n\n const scrollingUp = delta < 0\n const scrollingDown = delta > 0\n\n if (!alreadyAtStart && scrollingUp) return true\n if (!alreadyAtEnd && scrollingDown) return true\n if ((alreadyAtStart || alreadyAtEnd)) {\n return this.shouldScroll(el.parentNode as Element, e)\n }\n\n return false\n },\n isInside (el: Element, parent: Element): boolean {\n if (el === parent) {\n return true\n } else if (el === null || el === document.body) {\n return false\n } else {\n return this.isInside(el.parentNode as Element, parent)\n }\n },\n checkPath (e: WheelEvent) {\n const path = composedPath(e)\n\n if (e.type === 'keydown' && path[0] === document.body) {\n const dialog = this.$refs.dialog\n // getSelection returns null in firefox in some edge cases, can be ignored\n const selected = window.getSelection()!.anchorNode as Element\n if (dialog && this.hasScrollbar(dialog) && this.isInside(selected, dialog)) {\n return !this.shouldScroll(dialog, e)\n }\n return true\n }\n\n for (let index = 0; index < path.length; index++) {\n const el = path[index]\n\n if (el === document) return true\n if (el === document.documentElement) return true\n if (el === this.$refs.content) return true\n\n if (this.hasScrollbar(el as Element)) return !this.shouldScroll(el as Element, e)\n }\n\n return true\n },\n hideScroll () {\n if (this.$vuetify.breakpoint.smAndDown) {\n document.documentElement!.classList.add('overflow-y-hidden')\n } else {\n addPassiveEventListener(window, 'wheel', this.scrollListener, { passive: false })\n window.addEventListener('keydown', this.scrollListener)\n }\n },\n showScroll () {\n document.documentElement!.classList.remove('overflow-y-hidden')\n window.removeEventListener('wheel', this.scrollListener)\n window.removeEventListener('keydown', this.scrollListener)\n },\n },\n})\n"],"sourceRoot":""}