|  | import { createApp } from 'vue'; | 
|  |  | 
|  | import App from './App.vue'; | 
|  | import i18n from './i18n'; | 
|  |  | 
|  | import router from './router'; | 
|  |  | 
|  | import { format } from 'date-fns-tz'; | 
|  |  | 
|  | //Do not change store import. | 
|  | //Exact match alias set to support | 
|  | //dotenv customizations. | 
|  | import store from './store'; | 
|  | import eventBus from './eventBus'; | 
|  |  | 
|  | import { | 
|  | BootstrapVue, | 
|  | AlertPlugin, | 
|  | BadgePlugin, | 
|  | ButtonPlugin, | 
|  | BVConfigPlugin, | 
|  | CardPlugin, | 
|  | CollapsePlugin, | 
|  | DropdownPlugin, | 
|  | FormPlugin, | 
|  | FormCheckboxPlugin, | 
|  | FormDatepickerPlugin, | 
|  | FormFilePlugin, | 
|  | FormGroupPlugin, | 
|  | FormInputPlugin, | 
|  | FormRadioPlugin, | 
|  | FormSelectPlugin, | 
|  | FormTagsPlugin, | 
|  | InputGroupPlugin, | 
|  | LayoutPlugin, | 
|  | LinkPlugin, | 
|  | ListGroupPlugin, | 
|  | ModalPlugin, | 
|  | NavbarPlugin, | 
|  | NavPlugin, | 
|  | PaginationPlugin, | 
|  | ProgressPlugin, | 
|  | TablePlugin, | 
|  | TabsPlugin, | 
|  | ToastPlugin, | 
|  | TooltipPlugin, | 
|  | } from 'bootstrap-vue'; | 
|  |  | 
|  | const app = createApp({ | 
|  | router, | 
|  | store, | 
|  | render: (h) => h(App), | 
|  | }); | 
|  | app.use(i18n); | 
|  |  | 
|  | app.use(router); | 
|  | app.use(store); | 
|  |  | 
|  | // Plugins | 
|  | app.use(BootstrapVue); | 
|  | app.use(AlertPlugin); | 
|  | app.use(BadgePlugin); | 
|  | app.use(ButtonPlugin); | 
|  | app.use(BVConfigPlugin, { | 
|  | BFormText: { textVariant: 'secondary' }, | 
|  | BTable: { | 
|  | headVariant: 'light', | 
|  | footVariant: 'light', | 
|  | }, | 
|  | BFormTags: { | 
|  | tagVariant: 'primary', | 
|  | addButtonVariant: 'link-primary', | 
|  | }, | 
|  | BBadge: { | 
|  | variant: 'primary', | 
|  | }, | 
|  | }); | 
|  |  | 
|  | app.use(CardPlugin); | 
|  | app.use(CollapsePlugin); | 
|  | app.use(DropdownPlugin); | 
|  | app.use(FormPlugin); | 
|  | app.use(FormCheckboxPlugin); | 
|  | app.use(FormDatepickerPlugin); | 
|  | app.use(FormFilePlugin); | 
|  | app.use(FormGroupPlugin); | 
|  | app.use(FormInputPlugin); | 
|  | app.use(FormRadioPlugin); | 
|  | app.use(FormSelectPlugin); | 
|  | app.use(FormTagsPlugin); | 
|  | app.use(InputGroupPlugin); | 
|  | app.use(LayoutPlugin); | 
|  | app.use(LayoutPlugin); | 
|  | app.use(LinkPlugin); | 
|  | app.use(ListGroupPlugin); | 
|  | app.use(ModalPlugin); | 
|  | app.use(NavbarPlugin); | 
|  | app.use(NavPlugin); | 
|  | app.use(PaginationPlugin); | 
|  | app.use(ProgressPlugin); | 
|  | app.use(TablePlugin); | 
|  | app.use(TabsPlugin); | 
|  | app.use(ToastPlugin); | 
|  | app.use(TooltipPlugin); | 
|  |  | 
|  | app.mount('#app'); | 
|  | app.prototype.$eventBus = eventBus; | 
|  | //Filters | 
|  | const filter = { | 
|  | formatDate(value) { | 
|  | const isUtcDisplay = store.getters['global/isUtcDisplay']; | 
|  |  | 
|  | if (value instanceof Date) { | 
|  | if (isUtcDisplay) { | 
|  | return value.toISOString().substring(0, 10); | 
|  | } | 
|  | const pattern = `yyyy-MM-dd`; | 
|  | const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; | 
|  | return format(value, pattern, { timezone }); | 
|  | } | 
|  | }, | 
|  | formatTime(value) { | 
|  | const isUtcDisplay = store.getters['global/isUtcDisplay']; | 
|  |  | 
|  | if (value instanceof Date) { | 
|  | if (isUtcDisplay) { | 
|  | let timeOptions = { | 
|  | timeZone: 'UTC', | 
|  | hourCycle: 'h23', | 
|  | }; | 
|  | return `${value.toLocaleTimeString('default', timeOptions)} UTC`; | 
|  | } | 
|  | const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; | 
|  | const shortTz = this.shortTimeZone(value); | 
|  | const pattern = `HH:mm:ss ('${shortTz}' O)`; | 
|  | return format(value, pattern, { timezone }).replace('GMT', 'UTC'); | 
|  | } | 
|  | }, | 
|  | shortTimeZone(value) { | 
|  | const longTZ = value | 
|  | .toString() | 
|  | .match(/\((.*)\)/) | 
|  | .pop(); | 
|  | const regexNotUpper = /[*a-z ]/g; | 
|  | return longTZ.replace(regexNotUpper, ''); | 
|  | }, | 
|  | }; | 
|  | app.config.globalProperties.$filters = filter; |