{"version":3,"file":"login.js?id=78823bad","mappings":"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IoB,GAAGpB,EAAIyK,UAAUzK,EAAImB,GAAG,KAAKjB,EAAG,OAAO,CAACF,EAAIkB,GAAG,YAAY,IACvP,EACsB,IDSpB,EACA,KACA,WACA,M,YEQF,EAgBA,E,4CAhBA,YAEA,cACA,kBACA,iBAEC,CAND,YAgBA,YAEA,kBACA,oBACA,oBACA,oBACA,aAEC,CARD,YAUA,MChD6N,IDgD7N,SACA,sBAEA,YACA,aACA,2BACA,cAGA,OACA,kBAEA,kBAGA,kBACA,0BAEA,gBAEA,iBACA,cACA,iBACA,YACA,SACA,cACA,cACA,WACA,gBAEA,EAGA,CACA,CACA,eACA,iBAEA,CACA,cACA,gBAEA,CACA,eACA,iBAEA,CACA,eACA,iBAEA,CACA,YACA,eAQA,cACA,oBAEA,SACA,cAGA,SACA,sBACA,wBACA,gCACA,0BACA,eAEA,IAEA,CAmCA,aACA,gBAEA,MACA,iBAqFA,YACA,IACA,cACA,2BACA,CACA,MACA,eACA,CACA,CA5FA,UAGA,kCACA,sBACA,YACA,YACA,UAEA,UACA,mBACA,KACA,CACA,YACA,YACA,KACA,oBACA,UACA,cACA,cAGA,UACA,oBAEA,uBACA,WACA,aAEA,CAEA,UACA,sBACA,gBAEA,CACA,CAEA,cACA,0BACA,4BACA,EArGA,aACA,6BA0GA,qBACA,qBAGA,KACA,qBACA,mDACA,uBACA,EAGA,eAiBA,CACA,4BACA,uBACA,uBAnBA,MACA,IACA,yBAEA,WACA,eACA,EAKA,OACA,QACA,GAMA,IAGA,aAaA,OAEA,mBACA,OAGA,kBACA,0BAGA,aACA,SA9DA,YACA,0BACA,EA6DA,iBA7HA,WACA,SACA,SACA,cACA,cACA,WACA,eAGA,SACA,eAEA,EAkHA,eAjJA,YACA,UACA,SACA,sBACA,wBACA,gCACA,0BACA,aAGA,wBACA,6CAGA,SACA,eAEA,EAiIA,mBACA,iBACA,cAGA,kBACA,sBACA,2BAGA,wBACA,uBAEA,I,QE1QA,UAXgB,OACd,GCDW,WAAkB,IAAIlB,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAUF,EAAIG,MAAMC,YAAY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eACA,6BAGA,UACA,gBACA,yBAGA,iBACA,oBACA,6BAGA,SACA,YACA,qBAEA,iBACA,YACA,6BAEA,WACA,cACA,uBAEA,YACA,eACA,wBAEA,eACA,kBACA,2BAEA,WACA,cACA,wBAIA,WACA,cACA,yBAIA,UACA,cACA,wDACA,EAEA,aACA,SACA,SACA,OACA,YACA,WACA,cACA,SACA,UACA,cACA,MACA,QACA,SACA,YACA,QACA,SAGA,sBACA,eACA,wBAEA,MACA,QAEA,OACA,aAGA,QAEA,CAEA,UACA,IAEA,oBACA,eACA,aACA,OAEA,sBACA,kBACA,2BAGA,cACA,6BAGA,oBACA,qBACA,MACA,iBACA,UACA,iCACA,IACA,iCACA,6BAEA,mBACA,kBACA,MACA,cACA,UACA,uCACA,IACA,6BACA,6BAEA,mBACA,UACA,KACA,CAGA,EAFA,GAEA,CACA,CAEA,UACA,IA+EA,OA7EA,OACA,WACA,iBACA,gBACA,WAEA,SADA,GACA,KACA,CAEA,gBAOA,OAHA,sCACA,wCAMA,mBACA,gBACA,WAEA,SADA,EAEA,GAaA,iCACA,QARA,SACA,eAEA,iBACA,SAIA,0BAmCA,OAjCA,UACA,iBACA,QACA,cACA,cAGA,EACA,MACA,CACA,QACA,cACA,cAIA,OACA,oCACA,oCACA,+BAKA,MACA,CACA,QACA,cACA,2BAKA,GACA,GAGA,EAEA,iBACA,6CACA,mBAEA,EAEA,cACA,iCACA,EAEA,kBACA,qCACA,EAEA,sBACA,4BACA,8BACA,OAEA,sBACA,+BACA,OAEA,qBACA,4CAEA,OACA,2BACA,iBAEA,EACA,wCAEA,OACA,2BACA,iBAEA,CACA,GAGA,SACA,cACA,kBAGA,KACA,iBAGA,0BACA,cACA,4CACA,yCAEA,yCACA,4CACA,yCAEA,GAIA,qBACA,qBAEA,gDAEA,sBAEA,6CAEA,GACA,4BAGA,EACA,EAEA,gBACA,qBAEA,4BACA,4BAEA,GACA,gBACA,OAEA,KACA,MAGA,qBACA,cACA,mBAEA,EAEA,oBACA,qBAEA,4BACA,4BAEA,oBAKA,GAJA,mBACA,MAGA,e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CAAC,MAAQN,EAAIhC,MAAM,eAAe,GAAG,yBAAyB,GAAG,qBAAqB,2BAA2B0D,GAAG,CAAC,MAAQ,SAASiB,GAAQ,OAAO3C,EAAIkY,iBAAiBvV,EAAO,EAAE,QAAU,SAASA,GAAQ,OAAIA,EAAO4D,KAAKuD,QAAQ,QAAQ9J,EAAI+J,GAAGpH,EAAOqH,QAAQ,QAAQ,GAAGrH,EAAO7E,IAAI,SAAgB,KAAYkC,EAAIkY,iBAAiBlY,EAAIhC,MAAM,MAAM,IAAI,EACtiF,EACsB,IDCpB,EACA,KACA,WACA,M,QEkBF,MChCmN,IDgCnN,SACA,YACA,mBAGA,OACA,eAGA,UACA,CAEA,YACA,UACA,aAGA,gBACA,cACA,iBAGA,aACA,YAIA,UACA,qBACA,iDACA,EAEA,oBACA,qDACA,EAGA,yBACA,6DAEA,mDAEA,iDAGA,EAEA,iBACA,OACA,+DAEA,EAEA,mBACA,OACA,0BACA,wBACA,yBAEA,GAGA,OACA,YACA,YACA,EAEA,UACA,GACA,oBACA,wBACA,0BACA,wBAGA,YAEA,GAGA,SACA,cACA,uBAEA,oDAEA,qBACA,QACA,QACA,UACA,OACA,WACA,aAGA,SAGA,qBACA,QACA,WACA,YACA,CACA,QACA,UACA,OACA,WACA,eAKA,SAGA,aAEA,eACA,iBACA,iBACA,EAEA,gBACA,uBAEA,MA2BA,6CAEA,qBACA,OA7BA,EACA,CACA,WACA,YACA,CACA,QACA,UACA,OACA,WACA,eAMA,CACA,QACA,UACA,OACA,WACA,aAUA,QAEA,EAEA,WACA,gBAEA,mBACA,2CACA,MACA,aAEA,8CACA,8BAEA,2CAEA,SACA,WACA,YACA,CACA,QACA,UACA,OACA,QACA,SAGA,CACA,QACA,UACA,OACA,QACA,WAMA,qBACA,WAGA,0BACA,eACA,gBACA,CACA,SACA,6BACA,eACA,YACA,CACA,mDACA,6BAEA,kCAEA,MAGA,GACA,WACA,YACA,CACA,QACA,UACA,OACA,MAVA,+BAWA,SAGA,CACA,QACA,UACA,OACA,MAjBA,2BAkBA,WAMA,qBACA,WAGA,wBACA,oBACA,iBACA,qCACA,oDAC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eACA,4DAIA,EAEA,mBACA,gBACA,EAEA,0BACA,eACA,iEAEA,qBAEA,KACA,0CACA,sCACA,CACA,yBAEA,YACA,eAEA,EADA,eACA,SAEA,uBACA,qBACA,CACA,eACA,UAGA,CACA,qBACA,sBAEA,CAEA,mBACA,CAEA,CACA,MElOgB,OACd,GCRW,WAAkB,IAAI/a,EAAIC,KAAKC,EAAGF,EAAIG,MAAMD,GAAUF,EAAIG,MAAMC,YAAY,OAAQJ,EAAW,QAAEE,EAAG,MAAM,CAACY,YAAY,iBAAiB,CAACZ,EAAG,MAAM,CAACY,YAAY,mBAAmB,CAACZ,EAAG,SAAS,CAACI,MAAM,CAAC,GAAKN,EAAI+Z,eAAe/Z,EAAIuB,IAChP,EACsB,IDSpB,EACA,KACA,WACA,M,QEkBF,MChCmN,IDgCnN,SACA,kBAEA,OACA,aAEA,mBACA,eACA,eACA,OACA,YACA,kBAEA,kBAGA,UACA,CACA,mBAIA,UACA,SACA,oCACA,eAEA,WACA,OACA,IACA,IAuBA,OArBA,oCACA,MAEA,mBACA,kBACA,CACA,iCACA,uBACA,GAEA,UACA,IACA,OAGA,UACA,IACA,OAIA,GACA,EAEA,mBACA,oCACA,eAEA,WACA,OACA,IACA,IAsBA,OApBA,oCACA,MACA,mBACA,kBACA,CACA,iCACA,uBACA,GAEA,UACA,IACA,OAGA,UACA,IACA,OAIA,QAEA,uBACA,EAEA,cACA,WAUA,OARA,0CACA,sDACA,QACA,sBAKA,CACA,CACA,eACA,cACA,oEACA,OACA,sBACA,4CAGA,EAEA,qBACA,6CACA,GAGA,OACA,YACA,gBACA,EACA,OACA,UACA,gBACA,EACA,SAEA,WACA,gBACA,GAGA,UACA,gBACA,EAEA,SACA,YACA,wBAEA,8CACA,aAEA,0CAEA,+BACA,cACA,YAGA,UAEA,aACA,oBACA,MACA,mCACA,cACA,YACA,gBACA,0BACA,kCACA,QACA,kBAGA,SACA,cACA,aACA,cAEA,SACA,QACA,WACA,kBACA,QACA,WAIA,QACA,GACA,WACA,OACA,YAEA,MACA,6BAEA,OACA,MACA,SAEA,UAGA,GAC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AiBnO,SAAS,qBAAqB,IAAI,IAAI,IAAI,IAAI,IAAI,EACpzE,EACsB,IDLpB,EACA,KACA,KACA,M,QEXF,I,sBCsCA,MC1CkN,ID0ClN,SACA,YACA,YACA,iCAGA,OACA,sBACA,WACA,gBAGA,SACA,WACA,gBAEA,mBACA,WACA,gBAEA,sBACA,sBAGA,WACA,qBACA,kBACA,uBAEA,uDACA,2CACA,qDAGA,+CAGA,UACA,sBACA,iCACA,0CACA,EAEA,gBAOA,MANA,CACA,mBACA,mDACA,kDAGA,WACA,EAEA,iBAQA,MAPA,CACA,2BACA,gCACA,wCACA,8CAGA,WACA,EAEA,2BACA,YACA,mDACA,EAEA,QACA,sCACA,QACA,yDAEA,UAEA,EACA,oBACA,4BAJA,EAQA,EAEA,UACA,0BAEA,MACA,EADA,+BACA,OACA,QACA,WACA,GACA,IAUA,OARA,kBACA,UACA,4BACA,2BAEA,4CACA,aAEA,YACA,EAEA,gBACA,MAcA,EAdA,KACA,gEACA,+CACA,gDACA,eACA,4CACA,0BAEA,8DAEA,kCACA,GAGA,GAEA,8BACA,uBAEA,EAEA,qBACA,MAcA,EAdA,KACA,iEAEA,gDADA,WAGA,4CACA,2BAEA,8DAEA,WACA,GAGA,GAEA,8BACA,uBAEA,EAEA,qBACA,gCAEA,yCACA,0CAHA,EAIA,EAEA,iBACA,+BACA,2BACA,sBAEA,kDAGA,EAEA,sBACA,gCAEA,yCACA,2CAHA,EAIA,EAEA,kBACA,gCACA,2BACA,sBAGA,OADA,yCACA,IAEA,EAEA,gCACA,0CACA,gBACA,qBACA,0BAEA,GAGA,UACA,uBACA,4BACA,0CACA,4BACA,oBAEA,eACA,wBACA,mCAGA,8DACA,+DAEA,EAEA,SACA,kBACA,uBAGA,eACA,QACA,iBACA,OACA,oBAEA,qDAEA,sCACA,EAEA,eACA,QACA,iBACA,OACA,oBAEA,qDAEA,sCACA,EAEA,kBACA,uCACA,iDACA,0CAEA,qCACA,EAEA,2BACA,uBACA,0BAEA,gBACA,EAEA,kBACA,0DACA,EAEA,iBACA,UAGA,mBACA,6BAGA,KACA,iBAGA,aACA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","sources":["webpack:///./src/main/webapp/assets/css/global.scss","webpack:///./src/main/webapp/assets/components/ActionDialog.vue?a379","webpack:///./src/main/webapp/assets/components/App.vue?b602","webpack:///./src/main/webapp/assets/components/CopyToClipboardButton.vue?9d61","webpack:///./src/main/webapp/assets/components/Error.vue?0c38","webpack:///./src/main/webapp/assets/components/LoggedInContent.vue?ef2e","webpack:///./src/main/webapp/assets/components/StatsItemCard.vue?072a","webpack:///./src/main/webapp/assets/components/app-graph/AppGraph.vue?eae2","webpack:///./src/main/webapp/assets/components/assistants/AssistantSystemSelectWrapper.vue?aa3d","webpack:///./src/main/webapp/assets/components/checkboxlist/CheckboxList.vue?15b5","webpack:///./src/main/webapp/assets/components/core/BaseDialog.vue?f9f7","webpack:///./src/main/webapp/assets/components/core/DataViewDialog.vue?20b7","webpack:///./src/main/webapp/assets/components/core/DraggableDialog.vue?9467","webpack:///./src/main/webapp/assets/components/core/edit-custom-data/EditCustomData.vue?9bc2","webpack:///./src/main/webapp/assets/components/data-table-serverside/DateSearch.vue?f354","webpack:///./src/main/webapp/assets/components/graph/GraphCard.vue?16af","webpack:///./src/main/webapp/assets/components/graph/TenantCard.vue?bc31","webpack:///./src/main/webapp/assets/components/jsonviewer/JsonNode.vue?484f","webpack:///./src/main/webapp/assets/components/jsonviewer/JsonViewer.vue?37b6","webpack:///./src/main/webapp/assets/components/permsantipermslist/UserPermsAndAntiList.vue?eb69","webpack:///./src/main/webapp/assets/components/reselleruser-edit-dialog/ReselleruserEditDialog.vue?b42d","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/SalesFlow.vue?133e","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantCreateConfirmDialog.vue?3641","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantEditDialog.vue?ebe3","webpack:///./src/main/webapp/assets/views/login/Login.vue?d7e3","webpack:///./src/main/webapp/assets/css/global.scss?e8fe","webpack:///./src/main/webapp/assets/components/ActionDialog.vue?7134","webpack:///./src/main/webapp/assets/components/App.vue?d5bb","webpack:///./src/main/webapp/assets/components/CopyToClipboardButton.vue?1dc8","webpack:///./src/main/webapp/assets/components/Error.vue?6d5f","webpack:///./src/main/webapp/assets/components/LoggedInContent.vue?48f5","webpack:///./src/main/webapp/assets/components/StatsItemCard.vue?3969","webpack:///./src/main/webapp/assets/components/app-graph/AppGraph.vue?2a1a","webpack:///./src/main/webapp/assets/components/assistants/AssistantSystemSelectWrapper.vue?d5d6","webpack:///./src/main/webapp/assets/components/checkboxlist/CheckboxList.vue?e4dd","webpack:///./src/main/webapp/assets/components/core/BaseDialog.vue?7cfb","webpack:///./src/main/webapp/assets/components/core/DataViewDialog.vue?7b1c","webpack:///./src/main/webapp/assets/components/core/DraggableDialog.vue?677b","webpack:///./src/main/webapp/assets/components/core/edit-custom-data/EditCustomData.vue?710a","webpack:///./src/main/webapp/assets/components/data-table-serverside/DateSearch.vue?95b1","webpack:///./src/main/webapp/assets/components/graph/GraphCard.vue?3cb9","webpack:///./src/main/webapp/assets/components/graph/TenantCard.vue?9a80","webpack:///./src/main/webapp/assets/components/jsonviewer/JsonNode.vue?421d","webpack:///./src/main/webapp/assets/components/jsonviewer/JsonViewer.vue?b673","webpack:///./src/main/webapp/assets/components/permsantipermslist/UserPermsAndAntiList.vue?eb01","webpack:///./src/main/webapp/assets/components/reselleruser-edit-dialog/ReselleruserEditDialog.vue?24aa","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/SalesFlow.vue?a954","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantCreateConfirmDialog.vue?8a11","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantEditDialog.vue?9eb8","webpack:///./src/main/webapp/assets/views/login/Login.vue?5b96","webpack:///./src/main/webapp/assets/plugins/vuetify.ts","webpack:///./src/main/webapp/assets/plugins/store/sidebarstore.ts","webpack:///./src/main/webapp/assets/plugins/vuex.ts","webpack:///./src/main/webapp/assets/plugins/index.ts","webpack:///./src/main/webapp/assets/mixins/translatemixin.ts","webpack:///./src/main/webapp/assets/app.ts","webpack:///src/main/webapp/assets/components/ActionDialog.vue","webpack:///./src/main/webapp/assets/components/ActionDialog.vue?7f1a","webpack:///./src/main/webapp/assets/components/ActionDialog.vue","webpack:///./src/main/webapp/assets/components/ActionDialog.vue?93df","webpack:///src/main/webapp/assets/components/core/CoreSelect.vue","webpack:///./src/main/webapp/assets/components/core/CoreSelect.vue?efbd","webpack:///./src/main/webapp/assets/components/core/CoreSelect.vue","webpack:///./src/main/webapp/assets/components/core/CoreSelect.vue?276f","webpack:///src/main/webapp/assets/components/core/CoreAutocomplete.vue","webpack:///./src/main/webapp/assets/components/core/CoreAutocomplete.vue?580c","webpack:///./src/main/webapp/assets/components/core/CoreAutocomplete.vue","webpack:///./src/main/webapp/assets/components/core/CoreAutocomplete.vue?80a2","webpack:///src/main/webapp/assets/components/PbTooltip.vue","webpack:///./src/main/webapp/assets/components/PbTooltip.vue?b39b","webpack:///./src/main/webapp/assets/components/PbTooltip.vue","webpack:///./src/main/webapp/assets/components/PbTooltip.vue?331d","webpack:///src/main/webapp/assets/components/jsonviewer/JsonNode.vue","webpack:///./src/main/webapp/assets/components/jsonviewer/JsonNode.vue?3033","webpack:///./src/main/webapp/assets/components/jsonviewer/JsonNode.vue","webpack:///./src/main/webapp/assets/components/jsonviewer/JsonNode.vue?1fa1","webpack:///src/main/webapp/assets/components/jsonviewer/JsonViewer.vue","webpack:///./src/main/webapp/assets/components/jsonviewer/JsonViewer.vue?5dfa","webpack:///./src/main/webapp/assets/components/jsonviewer/JsonViewer.vue","webpack:///./src/main/webapp/assets/components/jsonviewer/JsonViewer.vue?27d2","webpack:///./src/main/webapp/assets/components/core/DraggableDialog.vue?af56","webpack:///./src/main/webapp/assets/plugins/store/dialogstore.ts","webpack:///./src/main/webapp/assets/components/core/DraggableDialog.vue?955a","webpack:///src/main/webapp/assets/components/core/DraggableDialog.vue","webpack:///./src/main/webapp/assets/components/core/DraggableDialog.vue","webpack:///src/main/webapp/assets/components/core/BaseDialog.vue","webpack:///./src/main/webapp/assets/components/core/BaseDialog.vue?26bb","webpack:///./src/main/webapp/assets/components/core/BaseDialog.vue","webpack:///./src/main/webapp/assets/components/core/BaseDialog.vue?b5a6","webpack:///src/main/webapp/assets/components/CopyToClipboardButton.vue","webpack:///./src/main/webapp/assets/components/CopyToClipboardButton.vue?4294","webpack:///./src/main/webapp/assets/components/CopyToClipboardButton.vue","webpack:///./src/main/webapp/assets/components/CopyToClipboardButton.vue?4d5b","webpack:///src/main/webapp/assets/components/core/edit-custom-data/InputLabel.vue","webpack:///./src/main/webapp/assets/components/core/edit-custom-data/InputLabel.vue?78fc","webpack:///./src/main/webapp/assets/components/core/edit-custom-data/InputLabel.vue","webpack:///./src/main/webapp/assets/components/core/edit-custom-data/InputLabel.vue?a29b","webpack:///src/main/webapp/assets/components/core/edit-custom-data/EditCustomData.vue","webpack:///./src/main/webapp/assets/components/core/edit-custom-data/EditCustomData.vue?2775","webpack:///./src/main/webapp/assets/components/core/edit-custom-data/EditCustomData.vue","webpack:///./src/main/webapp/assets/components/core/edit-custom-data/EditCustomData.vue?4443","webpack:///./src/main/webapp/assets/mixins/basedialogmixin.js","webpack:///src/main/webapp/assets/components/core/DataViewDialog.vue","webpack:///./src/main/webapp/assets/components/core/DataViewDialog.vue?34e5","webpack:///./src/main/webapp/assets/components/core/DataViewDialog.vue","webpack:///./src/main/webapp/assets/components/core/DataViewDialog.vue?28ab","webpack:///./src/main/webapp/assets/components/PbSelect.vue?89ab","webpack:///src/main/webapp/assets/components/PbSelect.vue","webpack:///./src/main/webapp/assets/components/PbSelect.vue?c45d","webpack:///./src/main/webapp/assets/components/PbSelect.vue","webpack:///./src/main/webapp/assets/components/LogoutBtn.vue?5906","webpack:///src/main/webapp/assets/components/LogoutBtn.vue","webpack:///./src/main/webapp/assets/components/LogoutBtn.vue?936b","webpack:///./src/main/webapp/assets/components/LogoutBtn.vue","webpack:///src/main/webapp/assets/components/SidebarMenuItem.vue","webpack:///./src/main/webapp/assets/components/SidebarMenuItem.vue?c483","webpack:///./src/main/webapp/assets/components/SidebarMenuItem.vue","webpack:///./src/main/webapp/assets/components/SidebarMenuItem.vue?cd48","webpack:///src/main/webapp/assets/components/DeleteDialog.vue","webpack:///./src/main/webapp/assets/components/DeleteDialog.vue?b288","webpack:///./src/main/webapp/assets/components/DeleteDialog.vue","webpack:///./src/main/webapp/assets/components/DeleteDialog.vue?3e46","webpack:///src/main/webapp/assets/components/ConfirmDialog.vue","webpack:///./src/main/webapp/assets/components/ConfirmDialog.vue?6adf","webpack:///./src/main/webapp/assets/components/ConfirmDialog.vue","webpack:///./src/main/webapp/assets/components/ConfirmDialog.vue?e3c8","webpack:///src/main/webapp/assets/components/ErrorDialog.vue","webpack:///./src/main/webapp/assets/components/ErrorDialog.vue?9288","webpack:///./src/main/webapp/assets/components/ErrorDialog.vue","webpack:///./src/main/webapp/assets/components/ErrorDialog.vue?e130","webpack:///src/main/webapp/assets/components/InfoDialog.vue","webpack:///./src/main/webapp/assets/components/InfoDialog.vue?50b6","webpack:///./src/main/webapp/assets/components/InfoDialog.vue","webpack:///./src/main/webapp/assets/components/InfoDialog.vue?7187","webpack:///src/main/webapp/assets/components/LoadingDialog.vue","webpack:///./src/main/webapp/assets/components/LoadingDialog.vue?7b66","webpack:///./src/main/webapp/assets/components/LoadingDialog.vue","webpack:///./src/main/webapp/assets/components/LoadingDialog.vue?0bc1","webpack:///src/main/webapp/assets/components/SuccessDialog.vue","webpack:///./src/main/webapp/assets/components/SuccessDialog.vue?f3c0","webpack:///./src/main/webapp/assets/components/SuccessDialog.vue","webpack:///./src/main/webapp/assets/components/SuccessDialog.vue?33c5","webpack:///src/main/webapp/assets/components/permsantipermslist/UserPermsAndAntiList.vue","webpack:///./src/main/webapp/assets/components/permsantipermslist/UserPermsAndAntiList.vue?9c48","webpack:///./src/main/webapp/assets/components/permsantipermslist/UserPermsAndAntiList.vue","webpack:///./src/main/webapp/assets/components/permsantipermslist/UserPermsAndAntiList.vue?99ab","webpack:///src/main/webapp/assets/components/LoggedOutContent.vue","webpack:///./src/main/webapp/assets/components/LoggedOutContent.vue?6aad","webpack:///./src/main/webapp/assets/components/LoggedOutContent.vue","webpack:///./src/main/webapp/assets/components/LoggedOutContent.vue?d304","webpack:///src/main/webapp/assets/components/LoggedInContent.vue","webpack:///./src/main/webapp/assets/components/LoggedInContent.vue?fe09","webpack:///./src/main/webapp/assets/components/LoggedInContent.vue","webpack:///./src/main/webapp/assets/components/LoggedInContent.vue?9e19","webpack:///src/main/webapp/assets/components/app-graph/AppGraph.vue","webpack:///./src/main/webapp/assets/components/app-graph/AppGraph.vue?846e","webpack:///./src/main/webapp/assets/components/app-graph/AppGraph.vue","webpack:///./src/main/webapp/assets/components/app-graph/AppGraph.vue?756f","webpack:///src/main/webapp/assets/components/assistants/AssistantSystemSelect.vue","webpack:///./src/main/webapp/assets/components/assistants/AssistantSystemSelect.vue?8a06","webpack:///./src/main/webapp/assets/components/assistants/AssistantSystemSelect.vue","webpack:///./src/main/webapp/assets/components/assistants/AssistantSystemSelect.vue?ca90","webpack:///src/main/webapp/assets/components/assistants/AssistantSystemSelectWrapper.vue","webpack:///./src/main/webapp/assets/components/assistants/AssistantSystemSelectWrapper.vue?51c7","webpack:///./src/main/webapp/assets/components/assistants/AssistantSystemSelectWrapper.vue","webpack:///./src/main/webapp/assets/components/assistants/AssistantSystemSelectWrapper.vue?5fe9","webpack:///src/main/webapp/assets/components/checkboxlist/OptionsOutput.vue","webpack:///./src/main/webapp/assets/components/checkboxlist/OptionsOutput.vue?475e","webpack:///./src/main/webapp/assets/components/checkboxlist/OptionsOutput.vue","webpack:///./src/main/webapp/assets/components/checkboxlist/OptionsOutput.vue?14b0","webpack:///./src/main/webapp/assets/components/checkboxlist/CheckboxList.vue?1e45","webpack:///src/main/webapp/assets/components/checkboxlist/CheckboxList.vue","webpack:///./src/main/webapp/assets/components/checkboxlist/CheckboxList.vue?62b3","webpack:///./src/main/webapp/assets/components/checkboxlist/CheckboxList.vue","webpack:///src/main/webapp/assets/components/inputs/DatetimeSelect.vue","webpack:///./src/main/webapp/assets/components/inputs/DatetimeSelect.vue?4d7c","webpack:///./src/main/webapp/assets/components/inputs/DatetimeSelect.vue","webpack:///./src/main/webapp/assets/components/inputs/DatetimeSelect.vue?5811","webpack:///src/main/webapp/assets/components/data-table-serverside/RangeSearch.vue","webpack:///./src/main/webapp/assets/components/data-table-serverside/RangeSearch.vue?79fe","webpack:///./src/main/webapp/assets/components/data-table-serverside/RangeSearch.vue","webpack:///./src/main/webapp/assets/components/data-table-serverside/RangeSearch.vue?22e4","webpack:///src/main/webapp/assets/components/data-table-serverside/DateSearch.vue","webpack:///./src/main/webapp/assets/components/data-table-serverside/DateSearch.vue?f473","webpack:///./src/main/webapp/assets/components/data-table-serverside/DateSearch.vue","webpack:///./src/main/webapp/assets/components/data-table-serverside/DateSearch.vue?3d04","webpack:///src/main/webapp/assets/components/data-table-serverside/DataTableServerside.vue","webpack:///./src/main/webapp/assets/components/data-table-serverside/DataTableServerside.vue?7c55","webpack:///./src/main/webapp/assets/components/data-table-serverside/DataTableServerside.vue","webpack:///./src/main/webapp/assets/components/data-table-serverside/DataTableServerside.vue?efca","webpack:///./src/main/webapp/assets/components/graph/GraphCard.vue?b5e6","webpack:///src/main/webapp/assets/components/graph/GraphCard.vue","webpack:///./src/main/webapp/assets/components/graph/GraphCard.vue?33c9","webpack:///./src/main/webapp/assets/components/graph/GraphCard.vue","webpack:///src/main/webapp/assets/components/StatsItemCard.vue","webpack:///./src/main/webapp/assets/components/StatsItemCard.vue?4542","webpack:///./src/main/webapp/assets/components/StatsItemCard.vue","webpack:///./src/main/webapp/assets/components/StatsItemCard.vue?e3d3","webpack:///src/main/webapp/assets/components/graph/StatsBlock.vue","webpack:///./src/main/webapp/assets/components/graph/StatsBlock.vue?cc96","webpack:///./src/main/webapp/assets/components/graph/StatsBlock.vue","webpack:///./src/main/webapp/assets/components/graph/StatsBlock.vue?9546","webpack:///src/main/webapp/assets/components/graph/StatsGraphCard.vue","webpack:///./src/main/webapp/assets/components/graph/StatsGraphCard.vue?3eb9","webpack:///./src/main/webapp/assets/components/graph/StatsGraphCard.vue","webpack:///./src/main/webapp/assets/components/graph/StatsGraphCard.vue?baba","webpack:///src/main/webapp/assets/components/graph/TenantCard.vue","webpack:///./src/main/webapp/assets/components/graph/TenantCard.vue?5441","webpack:///./src/main/webapp/assets/components/graph/TenantCard.vue","webpack:///./src/main/webapp/assets/components/graph/TenantCard.vue?ac01","webpack:///src/main/webapp/assets/components/inputs/SortSelect.vue","webpack:///./src/main/webapp/assets/components/inputs/SortSelect.vue?7fae","webpack:///./src/main/webapp/assets/components/inputs/SortSelect.vue","webpack:///./src/main/webapp/assets/components/inputs/SortSelect.vue?7858","webpack:///src/main/webapp/assets/components/reselleruser-edit-dialog/ReselleruserEditDialog.vue","webpack:///./src/main/webapp/assets/components/reselleruser-edit-dialog/ReselleruserEditDialog.vue?850b","webpack:///./src/main/webapp/assets/components/reselleruser-edit-dialog/ReselleruserEditDialog.vue","webpack:///./src/main/webapp/assets/components/reselleruser-edit-dialog/ReselleruserEditDialog.vue?a6df","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/SalesFlow.vue?a05f","webpack:///src/main/webapp/assets/components/tenant-edit-dialog/SalesFlow.vue","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/SalesFlow.vue?ac5d","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/SalesFlow.vue","webpack:///src/main/webapp/assets/components/tenant-edit-dialog/TenantCreateConfirmDialog.vue","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantCreateConfirmDialog.vue?9b4a","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantCreateConfirmDialog.vue","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantCreateConfirmDialog.vue?c578","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantEditDialog.vue?5cb2","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/tenant-edit-dialog.ts","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/tenant-edit-dialog.ts?9b5a","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantEditDialog.vue","webpack:///src/main/webapp/assets/components/tenant-edit-dialog/TenantTemplateDialog.vue","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantTemplateDialog.vue?f970","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantTemplateDialog.vue","webpack:///./src/main/webapp/assets/components/tenant-edit-dialog/TenantTemplateDialog.vue?97b8","webpack:///src/main/webapp/assets/components/user-edit-dialog/UserEditDialog.vue","webpack:///./src/main/webapp/assets/components/user-edit-dialog/UserEditDialog.vue?6df7","webpack:///./src/main/webapp/assets/components/user-edit-dialog/UserEditDialog.vue","webpack:///./src/main/webapp/assets/components/user-edit-dialog/UserEditDialog.vue?56df","webpack:///./src/main/webapp/assets/components/user-lang-select/UserLangSelect.vue?1310","webpack:///src/main/webapp/assets/components/user-lang-select/UserLangSelect.vue","webpack:///./src/main/webapp/assets/components/user-lang-select/UserLangSelect.vue?7c16","webpack:///./src/main/webapp/assets/components/user-lang-select/UserLangSelect.vue","webpack:///src/main/webapp/assets/components/Error.vue","webpack:///./src/main/webapp/assets/components/Error.vue?4430","webpack:///./src/main/webapp/assets/components/Error.vue","webpack:///./src/main/webapp/assets/components/Error.vue?7449","webpack:///src/main/webapp/assets/components/App.vue","webpack:///./src/main/webapp/assets/components/App.vue?b855","webpack:///./src/main/webapp/assets/components/App.vue","webpack:///./src/main/webapp/assets/components/App.vue?4881","webpack:///./src/main/webapp/assets/mixins/controlmixin.ts","webpack:///./src/main/webapp/assets/mixins/actiondialogmixin.ts","webpack:///./src/main/webapp/assets/mixins/actionmixin.ts","webpack:///./src/main/webapp/assets/mixins/dataTableServerSideMixin.ts","webpack:///./src/main/webapp/assets/mixins/doubleclickmixin.ts","webpack:///./src/main/webapp/assets/mixins/selectmixin.ts","webpack:///./src/main/webapp/assets/mixins/textmixin.ts","webpack:///./src/main/webapp/assets/mixins/index.ts","webpack:///./src/main/webapp/assets/modules/managers/reseller-user.ts","webpack:///./src/main/webapp/assets/views/login/login.ts","webpack:///./src/main/webapp/assets/views/login/login.ts?d345","webpack:///./src/main/webapp/assets/views/login/Login.vue","webpack:///./src/main/webapp/assets/views/login/Login.vue?53ae","webpack:///./src/main/webapp/login.ts"],"sourcesContent":["// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.width-10{width:10px !important;min-width:10px !important;max-width:10px !important}.width-11{width:11px !important;min-width:11px !important;max-width:11px !important}.width-12{width:12px !important;min-width:12px !important;max-width:12px !important}.width-13{width:13px !important;min-width:13px !important;max-width:13px !important}.width-14{width:14px !important;min-width:14px !important;max-width:14px !important}.width-15{width:15px !important;min-width:15px !important;max-width:15px !important}.width-16{width:16px !important;min-width:16px !important;max-width:16px !important}.width-17{width:17px !important;min-width:17px !important;max-width:17px !important}.width-18{width:18px !important;min-width:18px !important;max-width:18px !important}.width-19{width:19px !important;min-width:19px !important;max-width:19px !important}.width-20{width:20px !important;min-width:20px !important;max-width:20px !important}.width-21{width:21px !important;min-width:21px !important;max-width:21px !important}.width-22{width:22px !important;min-width:22px !important;max-width:22px !important}.width-23{width:23px !important;min-width:23px !important;max-width:23px !important}.width-24{width:24px !important;min-width:24px !important;max-width:24px !important}.width-25{width:25px !important;min-width:25px !important;max-width:25px !important}.width-26{width:26px !important;min-width:26px !important;max-width:26px !important}.width-27{width:27px !important;min-width:27px !important;max-width:27px !important}.width-28{width:28px !important;min-width:28px !important;max-width:28px !important}.width-29{width:29px !important;min-width:29px !important;max-width:29px !important}.width-30{width:30px !important;min-width:30px !important;max-width:30px !important}.width-31{width:31px !important;min-width:31px !important;max-width:31px !important}.width-32{width:32px !important;min-width:32px !important;max-width:32px !important}.width-33{width:33px !important;min-width:33px !important;max-width:33px !important}.width-34{width:34px !important;min-width:34px !important;max-width:34px !important}.width-35{width:35px !important;min-width:35px !important;max-width:35px !important}.width-36{width:36px !important;min-width:36px !important;max-width:36px !important}.width-37{width:37px !important;min-width:37px !important;max-width:37px !important}.width-38{width:38px !important;min-width:38px !important;max-width:38px !important}.width-39{width:39px !important;min-width:39px !important;max-width:39px !important}.width-40{width:40px !important;min-width:40px !important;max-width:40px !important}.width-41{width:41px !important;min-width:41px !important;max-width:41px !important}.width-42{width:42px !important;min-width:42px !important;max-width:42px !important}.width-43{width:43px !important;min-width:43px !important;max-width:43px !important}.width-44{width:44px !important;min-width:44px !important;max-width:44px !important}.width-45{width:45px !important;min-width:45px !important;max-width:45px !important}.width-46{width:46px !important;min-width:46px !important;max-width:46px !important}.width-47{width:47px !important;min-width:47px !important;max-width:47px !important}.width-48{width:48px !important;min-width:48px !important;max-width:48px !important}.width-49{width:49px !important;min-width:49px !important;max-width:49px !important}.width-50{width:50px !important;min-width:50px !important;max-width:50px !important}.width-51{width:51px !important;min-width:51px !important;max-width:51px !important}.width-52{width:52px !important;min-width:52px !important;max-width:52px !important}.width-53{width:53px !important;min-width:53px !important;max-width:53px !important}.width-54{width:54px !important;min-width:54px !important;max-width:54px !important}.width-55{width:55px !important;min-width:55px !important;max-width:55px !important}.width-56{width:56px !important;min-width:56px !important;max-width:56px !important}.width-57{width:57px !important;min-width:57px !important;max-width:57px !important}.width-58{width:58px !important;min-width:58px !important;max-width:58px !important}.width-59{width:59px !important;min-width:59px !important;max-width:59px !important}.width-60{width:60px !important;min-width:60px !important;max-width:60px !important}.width-61{width:61px !important;min-width:61px !important;max-width:61px !important}.width-62{width:62px !important;min-width:62px !important;max-width:62px !important}.width-63{width:63px !important;min-width:63px !important;max-width:63px !important}.width-64{width:64px !important;min-width:64px !important;max-width:64px !important}.width-65{width:65px !important;min-width:65px !important;max-width:65px !important}.width-66{width:66px !important;min-width:66px !important;max-width:66px !important}.width-67{width:67px !important;min-width:67px !important;max-width:67px !important}.width-68{width:68px !important;min-width:68px !important;max-width:68px !important}.width-69{width:69px !important;min-width:69px !important;max-width:69px !important}.width-70{width:70px !important;min-width:70px !important;max-width:70px !important}.width-71{width:71px !important;min-width:71px !important;max-width:71px !important}.width-72{width:72px !important;min-width:72px !important;max-width:72px !important}.width-73{width:73px !important;min-width:73px !important;max-width:73px !important}.width-74{width:74px !important;min-width:74px !important;max-width:74px !important}.width-75{width:75px !important;min-width:75px !important;max-width:75px !important}.width-76{width:76px !important;min-width:76px !important;max-width:76px !important}.width-77{width:77px !important;min-width:77px !important;max-width:77px !important}.width-78{width:78px !important;min-width:78px !important;max-width:78px !important}.width-79{width:79px !important;min-width:79px !important;max-width:79px !important}.width-80{width:80px !important;min-width:80px !important;max-width:80px !important}.width-81{width:81px !important;min-width:81px !important;max-width:81px !important}.width-82{width:82px !important;min-width:82px !important;max-width:82px !important}.width-83{width:83px !important;min-width:83px !important;max-width:83px !important}.width-84{width:84px !important;min-width:84px !important;max-width:84px !important}.width-85{width:85px !important;min-width:85px !important;max-width:85px !important}.width-86{width:86px !important;min-width:86px !important;max-width:86px !important}.width-87{width:87px !important;min-width:87px !important;max-width:87px !important}.width-88{width:88px !important;min-width:88px !important;max-width:88px !important}.width-89{width:89px !important;min-width:89px !important;max-width:89px !important}.width-90{width:90px !important;min-width:90px !important;max-width:90px !important}.width-91{width:91px !important;min-width:91px !important;max-width:91px !important}.width-92{width:92px !important;min-width:92px !important;max-width:92px !important}.width-93{width:93px !important;min-width:93px !important;max-width:93px !important}.width-94{width:94px !important;min-width:94px !important;max-width:94px !important}.width-95{width:95px !important;min-width:95px !important;max-width:95px !important}.width-96{width:96px !important;min-width:96px !important;max-width:96px !important}.width-97{width:97px !important;min-width:97px !important;max-width:97px !important}.width-98{width:98px !important;min-width:98px !important;max-width:98px !important}.width-99{width:99px !important;min-width:99px !important;max-width:99px !important}.width-100{width:100px !important;min-width:100px !important;max-width:100px !important}.width-101{width:101px !important;min-width:101px !important;max-width:101px !important}.width-102{width:102px !important;min-width:102px !important;max-width:102px !important}.width-103{width:103px !important;min-width:103px !important;max-width:103px !important}.width-104{width:104px !important;min-width:104px !important;max-width:104px !important}.width-105{width:105px !important;min-width:105px !important;max-width:105px !important}.width-106{width:106px !important;min-width:106px !important;max-width:106px !important}.width-107{width:107px !important;min-width:107px !important;max-width:107px !important}.width-108{width:108px !important;min-width:108px !important;max-width:108px !important}.width-109{width:109px !important;min-width:109px !important;max-width:109px !important}.width-110{width:110px !important;min-width:110px !important;max-width:110px !important}.width-111{width:111px !important;min-width:111px !important;max-width:111px !important}.width-112{width:112px !important;min-width:112px !important;max-width:112px !important}.width-113{width:113px !important;min-width:113px !important;max-width:113px !important}.width-114{width:114px !important;min-width:114px !important;max-width:114px !important}.width-115{width:115px !important;min-width:115px !important;max-width:115px !important}.width-116{width:116px !important;min-width:116px !important;max-width:116px !important}.width-117{width:117px !important;min-width:117px !important;max-width:117px !important}.width-118{width:118px !important;min-width:118px !important;max-width:118px !important}.width-119{width:119px !important;min-width:119px !important;max-width:119px !important}.width-120{width:120px !important;min-width:120px !important;max-width:120px !important}.width-121{width:121px !important;min-width:121px !important;max-width:121px !important}.width-122{width:122px !important;min-width:122px !important;max-width:122px !important}.width-123{width:123px !important;min-width:123px !important;max-width:123px !important}.width-124{width:124px !important;min-width:124px !important;max-width:124px !important}.width-125{width:125px !important;min-width:125px !important;max-width:125px !important}.width-126{width:126px !important;min-width:126px !important;max-width:126px !important}.width-127{width:127px !important;min-width:127px !important;max-width:127px !important}.width-128{width:128px !important;min-width:128px !important;max-width:128px !important}.width-129{width:129px !important;min-width:129px !important;max-width:129px !important}.width-130{width:130px !important;min-width:130px !important;max-width:130px !important}.width-131{width:131px !important;min-width:131px !important;max-width:131px !important}.width-132{width:132px !important;min-width:132px !important;max-width:132px !important}.width-133{width:133px !important;min-width:133px !important;max-width:133px !important}.width-134{width:134px !important;min-width:134px !important;max-width:134px !important}.width-135{width:135px !important;min-width:135px !important;max-width:135px !important}.width-136{width:136px !important;min-width:136px !important;max-width:136px !important}.width-137{width:137px !important;min-width:137px !important;max-width:137px !important}.width-138{width:138px !important;min-width:138px !important;max-width:138px !important}.width-139{width:139px !important;min-width:139px !important;max-width:139px !important}.width-140{width:140px !important;min-width:140px !important;max-width:140px !important}.width-141{width:141px !important;min-width:141px !important;max-width:141px !important}.width-142{width:142px !important;min-width:142px !important;max-width:142px !important}.width-143{width:143px !important;min-width:143px !important;max-width:143px !important}.width-144{width:144px !important;min-width:144px !important;max-width:144px !important}.width-145{width:145px !important;min-width:145px !important;max-width:145px !important}.width-146{width:146px !important;min-width:146px !important;max-width:146px !important}.width-147{width:147px !important;min-width:147px !important;max-width:147px !important}.width-148{width:148px !important;min-width:148px !important;max-width:148px !important}.width-149{width:149px !important;min-width:149px !important;max-width:149px !important}.width-150{width:150px !important;min-width:150px !important;max-width:150px !important}.width-151{width:151px !important;min-width:151px !important;max-width:151px !important}.width-152{width:152px !important;min-width:152px !important;max-width:152px !important}.width-153{width:153px !important;min-width:153px !important;max-width:153px !important}.width-154{width:154px !important;min-width:154px !important;max-width:154px !important}.width-155{width:155px !important;min-width:155px !important;max-width:155px !important}.width-156{width:156px !important;min-width:156px !important;max-width:156px !important}.width-157{width:157px !important;min-width:157px !important;max-width:157px !important}.width-158{width:158px !important;min-width:158px !important;max-width:158px !important}.width-159{width:159px !important;min-width:159px !important;max-width:159px !important}.width-160{width:160px !important;min-width:160px !important;max-width:160px !important}.width-161{width:161px !important;min-width:161px !important;max-width:161px !important}.width-162{width:162px !important;min-width:162px !important;max-width:162px !important}.width-163{width:163px !important;min-width:163px !important;max-width:163px !important}.width-164{width:164px !important;min-width:164px !important;max-width:164px !important}.width-165{width:165px !important;min-width:165px !important;max-width:165px !important}.width-166{width:166px !important;min-width:166px !important;max-width:166px !important}.width-167{width:167px !important;min-width:167px !important;max-width:167px !important}.width-168{width:168px !important;min-width:168px !important;max-width:168px !important}.width-169{width:169px !important;min-width:169px !important;max-width:169px !important}.width-170{width:170px !important;min-width:170px !important;max-width:170px !important}.width-171{width:171px !important;min-width:171px !important;max-width:171px !important}.width-172{width:172px !important;min-width:172px !important;max-width:172px !important}.width-173{width:173px !important;min-width:173px !important;max-width:173px !important}.width-174{width:174px !important;min-width:174px !important;max-width:174px !important}.width-175{width:175px !important;min-width:175px !important;max-width:175px !important}.width-176{width:176px !important;min-width:176px !important;max-width:176px !important}.width-177{width:177px !important;min-width:177px !important;max-width:177px !important}.width-178{width:178px !important;min-width:178px !important;max-width:178px !important}.width-179{width:179px !important;min-width:179px !important;max-width:179px !important}.width-180{width:180px !important;min-width:180px !important;max-width:180px !important}.width-181{width:181px !important;min-width:181px !important;max-width:181px !important}.width-182{width:182px !important;min-width:182px !important;max-width:182px !important}.width-183{width:183px !important;min-width:183px !important;max-width:183px !important}.width-184{width:184px !important;min-width:184px !important;max-width:184px !important}.width-185{width:185px !important;min-width:185px !important;max-width:185px !important}.width-186{width:186px !important;min-width:186px !important;max-width:186px !important}.width-187{width:187px !important;min-width:187px !important;max-width:187px !important}.width-188{width:188px !important;min-width:188px !important;max-width:188px !important}.width-189{width:189px !important;min-width:189px !important;max-width:189px !important}.width-190{width:190px !important;min-width:190px !important;max-width:190px !important}.width-191{width:191px !important;min-width:191px !important;max-width:191px !important}.width-192{width:192px !important;min-width:192px !important;max-width:192px !important}.width-193{width:193px !important;min-width:193px !important;max-width:193px !important}.width-194{width:194px !important;min-width:194px !important;max-width:194px !important}.width-195{width:195px !important;min-width:195px !important;max-width:195px !important}.width-196{width:196px !important;min-width:196px !important;max-width:196px !important}.width-197{width:197px !important;min-width:197px !important;max-width:197px !important}.width-198{width:198px !important;min-width:198px !important;max-width:198px !important}.width-199{width:199px !important;min-width:199px !important;max-width:199px !important}.width-200{width:200px !important;min-width:200px !important;max-width:200px !important}.width-201{width:201px !important;min-width:201px !important;max-width:201px !important}.width-202{width:202px !important;min-width:202px !important;max-width:202px !important}.width-203{width:203px !important;min-width:203px !important;max-width:203px !important}.width-204{width:204px !important;min-width:204px !important;max-width:204px !important}.width-205{width:205px !important;min-width:205px !important;max-width:205px !important}.width-206{width:206px !important;min-width:206px !important;max-width:206px !important}.width-207{width:207px !important;min-width:207px !important;max-width:207px !important}.width-208{width:208px !important;min-width:208px !important;max-width:208px !important}.width-209{width:209px !important;min-width:209px !important;max-width:209px !important}.width-210{width:210px !important;min-width:210px !important;max-width:210px !important}.width-211{width:211px !important;min-width:211px !important;max-width:211px !important}.width-212{width:212px !important;min-width:212px !important;max-width:212px !important}.width-213{width:213px !important;min-width:213px !important;max-width:213px !important}.width-214{width:214px !important;min-width:214px !important;max-width:214px !important}.width-215{width:215px !important;min-width:215px !important;max-width:215px !important}.width-216{width:216px !important;min-width:216px !important;max-width:216px !important}.width-217{width:217px !important;min-width:217px !important;max-width:217px !important}.width-218{width:218px !important;min-width:218px !important;max-width:218px !important}.width-219{width:219px !important;min-width:219px !important;max-width:219px !important}.width-220{width:220px !important;min-width:220px !important;max-width:220px !important}.width-221{width:221px !important;min-width:221px !important;max-width:221px !important}.width-222{width:222px !important;min-width:222px !important;max-width:222px !important}.width-223{width:223px !important;min-width:223px !important;max-width:223px !important}.width-224{width:224px !important;min-width:224px !important;max-width:224px !important}.width-225{width:225px !important;min-width:225px !important;max-width:225px !important}.width-226{width:226px !important;min-width:226px !important;max-width:226px !important}.width-227{width:227px !important;min-width:227px !important;max-width:227px !important}.width-228{width:228px !important;min-width:228px !important;max-width:228px !important}.width-229{width:229px !important;min-width:229px !important;max-width:229px !important}.width-230{width:230px !important;min-width:230px !important;max-width:230px !important}.width-231{width:231px !important;min-width:231px !important;max-width:231px !important}.width-232{width:232px !important;min-width:232px !important;max-width:232px !important}.width-233{width:233px !important;min-width:233px !important;max-width:233px !important}.width-234{width:234px !important;min-width:234px !important;max-width:234px !important}.width-235{width:235px !important;min-width:235px !important;max-width:235px !important}.width-236{width:236px !important;min-width:236px !important;max-width:236px !important}.width-237{width:237px !important;min-width:237px !important;max-width:237px !important}.width-238{width:238px !important;min-width:238px !important;max-width:238px !important}.width-239{width:239px !important;min-width:239px !important;max-width:239px !important}.width-240{width:240px !important;min-width:240px !important;max-width:240px !important}.width-241{width:241px !important;min-width:241px !important;max-width:241px !important}.width-242{width:242px !important;min-width:242px !important;max-width:242px !important}.width-243{width:243px !important;min-width:243px !important;max-width:243px !important}.width-244{width:244px !important;min-width:244px !important;max-width:244px !important}.width-245{width:245px !important;min-width:245px !important;max-width:245px !important}.width-246{width:246px !important;min-width:246px !important;max-width:246px !important}.width-247{width:247px !important;min-width:247px !important;max-width:247px !important}.width-248{width:248px !important;min-width:248px !important;max-width:248px !important}.width-249{width:249px !important;min-width:249px !important;max-width:249px !important}.width-250{width:250px !important;min-width:250px !important;max-width:250px !important}.width-251{width:251px !important;min-width:251px !important;max-width:251px !important}.width-252{width:252px !important;min-width:252px !important;max-width:252px !important}.width-253{width:253px !important;min-width:253px !important;max-width:253px !important}.width-254{width:254px !important;min-width:254px !important;max-width:254px !important}.width-255{width:255px !important;min-width:255px !important;max-width:255px !important}.width-256{width:256px !important;min-width:256px !important;max-width:256px !important}.width-257{width:257px !important;min-width:257px !important;max-width:257px !important}.width-258{width:258px !important;min-width:258px !important;max-width:258px !important}.width-259{width:259px !important;min-width:259px !important;max-width:259px !important}.width-260{width:260px !important;min-width:260px !important;max-width:260px !important}.width-261{width:261px !important;min-width:261px !important;max-width:261px !important}.width-262{width:262px !important;min-width:262px !important;max-width:262px !important}.width-263{width:263px !important;min-width:263px !important;max-width:263px !important}.width-264{width:264px !important;min-width:264px !important;max-width:264px !important}.width-265{width:265px !important;min-width:265px !important;max-width:265px !important}.width-266{width:266px !important;min-width:266px !important;max-width:266px !important}.width-267{width:267px !important;min-width:267px !important;max-width:267px !important}.width-268{width:268px !important;min-width:268px !important;max-width:268px !important}.width-269{width:269px !important;min-width:269px !important;max-width:269px !important}.width-270{width:270px !important;min-width:270px !important;max-width:270px !important}.width-271{width:271px !important;min-width:271px !important;max-width:271px !important}.width-272{width:272px !important;min-width:272px !important;max-width:272px !important}.width-273{width:273px !important;min-width:273px !important;max-width:273px !important}.width-274{width:274px !important;min-width:274px !important;max-width:274px !important}.width-275{width:275px !important;min-width:275px !important;max-width:275px !important}.width-276{width:276px !important;min-width:276px !important;max-width:276px !important}.width-277{width:277px !important;min-width:277px !important;max-width:277px !important}.width-278{width:278px !important;min-width:278px !important;max-width:278px !important}.width-279{width:279px !important;min-width:279px !important;max-width:279px !important}.width-280{width:280px !important;min-width:280px !important;max-width:280px !important}.width-281{width:281px !important;min-width:281px !important;max-width:281px !important}.width-282{width:282px !important;min-width:282px !important;max-width:282px !important}.width-283{width:283px !important;min-width:283px !important;max-width:283px !important}.width-284{width:284px !important;min-width:284px !important;max-width:284px !important}.width-285{width:285px !important;min-width:285px !important;max-width:285px !important}.width-286{width:286px !important;min-width:286px !important;max-width:286px !important}.width-287{width:287px !important;min-width:287px !important;max-width:287px !important}.width-288{width:288px !important;min-width:288px !important;max-width:288px !important}.width-289{width:289px !important;min-width:289px !important;max-width:289px !important}.width-290{width:290px !important;min-width:290px !important;max-width:290px !important}.width-291{width:291px !important;min-width:291px !important;max-width:291px !important}.width-292{width:292px !important;min-width:292px !important;max-width:292px !important}.width-293{width:293px !important;min-width:293px !important;max-width:293px !important}.width-294{width:294px !important;min-width:294px !important;max-width:294px !important}.width-295{width:295px !important;min-width:295px !important;max-width:295px !important}.width-296{width:296px !important;min-width:296px !important;max-width:296px !important}.width-297{width:297px !important;min-width:297px !important;max-width:297px !important}.width-298{width:298px !important;min-width:298px !important;max-width:298px !important}.width-299{width:299px !important;min-width:299px !important;max-width:299px !important}.width-300{width:300px !important;min-width:300px !important;max-width:300px !important}.width-301{width:301px !important;min-width:301px !important;max-width:301px !important}.width-302{width:302px !important;min-width:302px !important;max-width:302px !important}.width-303{width:303px !important;min-width:303px !important;max-width:303px !important}.width-304{width:304px !important;min-width:304px !important;max-width:304px !important}.width-305{width:305px !important;min-width:305px !important;max-width:305px !important}.width-306{width:306px !important;min-width:306px !important;max-width:306px !important}.width-307{width:307px !important;min-width:307px !important;max-width:307px !important}.width-308{width:308px !important;min-width:308px !important;max-width:308px !important}.width-309{width:309px !important;min-width:309px !important;max-width:309px !important}.width-310{width:310px !important;min-width:310px !important;max-width:310px !important}.width-311{width:311px !important;min-width:311px !important;max-width:311px !important}.width-312{width:312px !important;min-width:312px !important;max-width:312px !important}.width-313{width:313px !important;min-width:313px !important;max-width:313px !important}.width-314{width:314px !important;min-width:314px !important;max-width:314px !important}.width-315{width:315px !important;min-width:315px !important;max-width:315px !important}.width-316{width:316px !important;min-width:316px !important;max-width:316px !important}.width-317{width:317px !important;min-width:317px !important;max-width:317px !important}.width-318{width:318px !important;min-width:318px !important;max-width:318px !important}.width-319{width:319px !important;min-width:319px !important;max-width:319px !important}.width-320{width:320px !important;min-width:320px !important;max-width:320px !important}.width-321{width:321px !important;min-width:321px !important;max-width:321px !important}.width-322{width:322px !important;min-width:322px !important;max-width:322px !important}.width-323{width:323px !important;min-width:323px !important;max-width:323px !important}.width-324{width:324px !important;min-width:324px !important;max-width:324px !important}.width-325{width:325px !important;min-width:325px !important;max-width:325px !important}.width-326{width:326px !important;min-width:326px !important;max-width:326px !important}.width-327{width:327px !important;min-width:327px !important;max-width:327px !important}.width-328{width:328px !important;min-width:328px !important;max-width:328px !important}.width-329{width:329px !important;min-width:329px !important;max-width:329px !important}.width-330{width:330px !important;min-width:330px !important;max-width:330px !important}.width-331{width:331px !important;min-width:331px !important;max-width:331px !important}.width-332{width:332px !important;min-width:332px !important;max-width:332px !important}.width-333{width:333px !important;min-width:333px !important;max-width:333px !important}.width-334{width:334px !important;min-width:334px !important;max-width:334px !important}.width-335{width:335px !important;min-width:335px !important;max-width:335px !important}.width-336{width:336px !important;min-width:336px !important;max-width:336px !important}.width-337{width:337px !important;min-width:337px !important;max-width:337px !important}.width-338{width:338px !important;min-width:338px !important;max-width:338px !important}.width-339{width:339px !important;min-width:339px !important;max-width:339px !important}.width-340{width:340px !important;min-width:340px !important;max-width:340px !important}.width-341{width:341px !important;min-width:341px !important;max-width:341px !important}.width-342{width:342px !important;min-width:342px !important;max-width:342px !important}.width-343{width:343px !important;min-width:343px !important;max-width:343px !important}.width-344{width:344px !important;min-width:344px !important;max-width:344px !important}.width-345{width:345px !important;min-width:345px !important;max-width:345px !important}.width-346{width:346px !important;min-width:346px !important;max-width:346px !important}.width-347{width:347px !important;min-width:347px !important;max-width:347px !important}.width-348{width:348px !important;min-width:348px !important;max-width:348px !important}.width-349{width:349px !important;min-width:349px !important;max-width:349px !important}.width-350{width:350px !important;min-width:350px !important;max-width:350px !important}.width-351{width:351px !important;min-width:351px !important;max-width:351px !important}.width-352{width:352px !important;min-width:352px !important;max-width:352px !important}.width-353{width:353px !important;min-width:353px !important;max-width:353px !important}.width-354{width:354px !important;min-width:354px !important;max-width:354px !important}.width-355{width:355px !important;min-width:355px !important;max-width:355px !important}.width-356{width:356px !important;min-width:356px !important;max-width:356px !important}.width-357{width:357px !important;min-width:357px !important;max-width:357px !important}.width-358{width:358px !important;min-width:358px !important;max-width:358px !important}.width-359{width:359px !important;min-width:359px !important;max-width:359px !important}.width-360{width:360px !important;min-width:360px !important;max-width:360px !important}.width-361{width:361px !important;min-width:361px !important;max-width:361px !important}.width-362{width:362px !important;min-width:362px !important;max-width:362px !important}.width-363{width:363px !important;min-width:363px !important;max-width:363px !important}.width-364{width:364px !important;min-width:364px !important;max-width:364px !important}.width-365{width:365px !important;min-width:365px !important;max-width:365px !important}.width-366{width:366px !important;min-width:366px !important;max-width:366px !important}.width-367{width:367px !important;min-width:367px !important;max-width:367px !important}.width-368{width:368px !important;min-width:368px !important;max-width:368px !important}.width-369{width:369px !important;min-width:369px !important;max-width:369px !important}.width-370{width:370px !important;min-width:370px !important;max-width:370px !important}.width-371{width:371px !important;min-width:371px !important;max-width:371px !important}.width-372{width:372px !important;min-width:372px !important;max-width:372px !important}.width-373{width:373px !important;min-width:373px !important;max-width:373px !important}.width-374{width:374px !important;min-width:374px !important;max-width:374px !important}.width-375{width:375px !important;min-width:375px !important;max-width:375px !important}.width-376{width:376px !important;min-width:376px !important;max-width:376px !important}.width-377{width:377px !important;min-width:377px !important;max-width:377px !important}.width-378{width:378px !important;min-width:378px !important;max-width:378px !important}.width-379{width:379px !important;min-width:379px !important;max-width:379px !important}.width-380{width:380px !important;min-width:380px !important;max-width:380px !important}.width-381{width:381px !important;min-width:381px !important;max-width:381px !important}.width-382{width:382px !important;min-width:382px !important;max-width:382px !important}.width-383{width:383px !important;min-width:383px !important;max-width:383px !important}.width-384{width:384px !important;min-width:384px !important;max-width:384px !important}.width-385{width:385px !important;min-width:385px !important;max-width:385px !important}.width-386{width:386px !important;min-width:386px !important;max-width:386px !important}.width-387{width:387px !important;min-width:387px !important;max-width:387px !important}.width-388{width:388px !important;min-width:388px !important;max-width:388px !important}.width-389{width:389px !important;min-width:389px !important;max-width:389px !important}.width-390{width:390px !important;min-width:390px !important;max-width:390px !important}.width-391{width:391px !important;min-width:391px !important;max-width:391px !important}.width-392{width:392px !important;min-width:392px !important;max-width:392px !important}.width-393{width:393px !important;min-width:393px !important;max-width:393px !important}.width-394{width:394px !important;min-width:394px !important;max-width:394px !important}.width-395{width:395px !important;min-width:395px !important;max-width:395px !important}.width-396{width:396px !important;min-width:396px !important;max-width:396px !important}.width-397{width:397px !important;min-width:397px !important;max-width:397px !important}.width-398{width:398px !important;min-width:398px !important;max-width:398px !important}.width-399{width:399px !important;min-width:399px !important;max-width:399px !important}.width-400{width:400px !important;min-width:400px !important;max-width:400px !important}.width-401{width:401px !important;min-width:401px !important;max-width:401px !important}.width-402{width:402px !important;min-width:402px !important;max-width:402px !important}.width-403{width:403px !important;min-width:403px !important;max-width:403px !important}.width-404{width:404px !important;min-width:404px !important;max-width:404px !important}.width-405{width:405px !important;min-width:405px !important;max-width:405px !important}.width-406{width:406px !important;min-width:406px !important;max-width:406px !important}.width-407{width:407px !important;min-width:407px !important;max-width:407px !important}.width-408{width:408px !important;min-width:408px !important;max-width:408px !important}.width-409{width:409px !important;min-width:409px !important;max-width:409px !important}.width-410{width:410px !important;min-width:410px !important;max-width:410px !important}.width-411{width:411px !important;min-width:411px !important;max-width:411px !important}.width-412{width:412px !important;min-width:412px !important;max-width:412px !important}.width-413{width:413px !important;min-width:413px !important;max-width:413px !important}.width-414{width:414px !important;min-width:414px !important;max-width:414px !important}.width-415{width:415px !important;min-width:415px !important;max-width:415px !important}.width-416{width:416px !important;min-width:416px !important;max-width:416px !important}.width-417{width:417px !important;min-width:417px !important;max-width:417px !important}.width-418{width:418px !important;min-width:418px !important;max-width:418px !important}.width-419{width:419px !important;min-width:419px !important;max-width:419px !important}.width-420{width:420px !important;min-width:420px !important;max-width:420px !important}.width-421{width:421px !important;min-width:421px !important;max-width:421px !important}.width-422{width:422px !important;min-width:422px !important;max-width:422px !important}.width-423{width:423px !important;min-width:423px !important;max-width:423px !important}.width-424{width:424px !important;min-width:424px !important;max-width:424px !important}.width-425{width:425px !important;min-width:425px !important;max-width:425px !important}.width-426{width:426px !important;min-width:426px !important;max-width:426px !important}.width-427{width:427px !important;min-width:427px !important;max-width:427px !important}.width-428{width:428px !important;min-width:428px !important;max-width:428px !important}.width-429{width:429px !important;min-width:429px !important;max-width:429px !important}.width-430{width:430px !important;min-width:430px !important;max-width:430px !important}.width-431{width:431px !important;min-width:431px !important;max-width:431px !important}.width-432{width:432px !important;min-width:432px !important;max-width:432px !important}.width-433{width:433px !important;min-width:433px !important;max-width:433px !important}.width-434{width:434px !important;min-width:434px !important;max-width:434px !important}.width-435{width:435px !important;min-width:435px !important;max-width:435px !important}.width-436{width:436px !important;min-width:436px !important;max-width:436px !important}.width-437{width:437px !important;min-width:437px !important;max-width:437px !important}.width-438{width:438px !important;min-width:438px !important;max-width:438px !important}.width-439{width:439px !important;min-width:439px !important;max-width:439px !important}.width-440{width:440px !important;min-width:440px !important;max-width:440px !important}.width-441{width:441px !important;min-width:441px !important;max-width:441px !important}.width-442{width:442px !important;min-width:442px !important;max-width:442px !important}.width-443{width:443px !important;min-width:443px !important;max-width:443px !important}.width-444{width:444px !important;min-width:444px !important;max-width:444px !important}.width-445{width:445px !important;min-width:445px !important;max-width:445px !important}.width-446{width:446px !important;min-width:446px !important;max-width:446px !important}.width-447{width:447px !important;min-width:447px !important;max-width:447px !important}.width-448{width:448px !important;min-width:448px !important;max-width:448px !important}.width-449{width:449px !important;min-width:449px !important;max-width:449px !important}.width-450{width:450px !important;min-width:450px !important;max-width:450px !important}.min-width-10{min-width:10px !important}.min-width-11{min-width:11px !important}.min-width-12{min-width:12px !important}.min-width-13{min-width:13px !important}.min-width-14{min-width:14px !important}.min-width-15{min-width:15px !important}.min-width-16{min-width:16px !important}.min-width-17{min-width:17px !important}.min-width-18{min-width:18px !important}.min-width-19{min-width:19px !important}.min-width-20{min-width:20px !important}.min-width-21{min-width:21px !important}.min-width-22{min-width:22px !important}.min-width-23{min-width:23px !important}.min-width-24{min-width:24px !important}.min-width-25{min-width:25px !important}.min-width-26{min-width:26px !important}.min-width-27{min-width:27px !important}.min-width-28{min-width:28px !important}.min-width-29{min-width:29px !important}.min-width-30{min-width:30px !important}.min-width-31{min-width:31px !important}.min-width-32{min-width:32px !important}.min-width-33{min-width:33px !important}.min-width-34{min-width:34px !important}.min-width-35{min-width:35px !important}.min-width-36{min-width:36px !important}.min-width-37{min-width:37px !important}.min-width-38{min-width:38px !important}.min-width-39{min-width:39px !important}.min-width-40{min-width:40px !important}.min-width-41{min-width:41px !important}.min-width-42{min-width:42px !important}.min-width-43{min-width:43px !important}.min-width-44{min-width:44px !important}.min-width-45{min-width:45px !important}.min-width-46{min-width:46px !important}.min-width-47{min-width:47px !important}.min-width-48{min-width:48px !important}.min-width-49{min-width:49px !important}.min-width-50{min-width:50px !important}.min-width-51{min-width:51px !important}.min-width-52{min-width:52px !important}.min-width-53{min-width:53px !important}.min-width-54{min-width:54px !important}.min-width-55{min-width:55px !important}.min-width-56{min-width:56px !important}.min-width-57{min-width:57px !important}.min-width-58{min-width:58px !important}.min-width-59{min-width:59px !important}.min-width-60{min-width:60px !important}.min-width-61{min-width:61px !important}.min-width-62{min-width:62px !important}.min-width-63{min-width:63px !important}.min-width-64{min-width:64px !important}.min-width-65{min-width:65px !important}.min-width-66{min-width:66px !important}.min-width-67{min-width:67px !important}.min-width-68{min-width:68px !important}.min-width-69{min-width:69px !important}.min-width-70{min-width:70px !important}.min-width-71{min-width:71px !important}.min-width-72{min-width:72px !important}.min-width-73{min-width:73px !important}.min-width-74{min-width:74px !important}.min-width-75{min-width:75px !important}.min-width-76{min-width:76px !important}.min-width-77{min-width:77px !important}.min-width-78{min-width:78px !important}.min-width-79{min-width:79px !important}.min-width-80{min-width:80px !important}.min-width-81{min-width:81px !important}.min-width-82{min-width:82px !important}.min-width-83{min-width:83px !important}.min-width-84{min-width:84px !important}.min-width-85{min-width:85px !important}.min-width-86{min-width:86px !important}.min-width-87{min-width:87px !important}.min-width-88{min-width:88px !important}.min-width-89{min-width:89px !important}.min-width-90{min-width:90px !important}.min-width-91{min-width:91px !important}.min-width-92{min-width:92px !important}.min-width-93{min-width:93px !important}.min-width-94{min-width:94px !important}.min-width-95{min-width:95px !important}.min-width-96{min-width:96px !important}.min-width-97{min-width:97px !important}.min-width-98{min-width:98px !important}.min-width-99{min-width:99px !important}.min-width-100{min-width:100px !important}.min-width-101{min-width:101px !important}.min-width-102{min-width:102px !important}.min-width-103{min-width:103px !important}.min-width-104{min-width:104px !important}.min-width-105{min-width:105px !important}.min-width-106{min-width:106px !important}.min-width-107{min-width:107px !important}.min-width-108{min-width:108px !important}.min-width-109{min-width:109px !important}.min-width-110{min-width:110px !important}.min-width-111{min-width:111px !important}.min-width-112{min-width:112px !important}.min-width-113{min-width:113px !important}.min-width-114{min-width:114px !important}.min-width-115{min-width:115px !important}.min-width-116{min-width:116px !important}.min-width-117{min-width:117px !important}.min-width-118{min-width:118px !important}.min-width-119{min-width:119px !important}.min-width-120{min-width:120px !important}.min-width-121{min-width:121px !important}.min-width-122{min-width:122px !important}.min-width-123{min-width:123px !important}.min-width-124{min-width:124px !important}.min-width-125{min-width:125px !important}.min-width-126{min-width:126px !important}.min-width-127{min-width:127px !important}.min-width-128{min-width:128px !important}.min-width-129{min-width:129px !important}.min-width-130{min-width:130px !important}.min-width-131{min-width:131px !important}.min-width-132{min-width:132px !important}.min-width-133{min-width:133px !important}.min-width-134{min-width:134px !important}.min-width-135{min-width:135px !important}.min-width-136{min-width:136px !important}.min-width-137{min-width:137px !important}.min-width-138{min-width:138px !important}.min-width-139{min-width:139px !important}.min-width-140{min-width:140px !important}.min-width-141{min-width:141px !important}.min-width-142{min-width:142px !important}.min-width-143{min-width:143px !important}.min-width-144{min-width:144px !important}.min-width-145{min-width:145px !important}.min-width-146{min-width:146px !important}.min-width-147{min-width:147px !important}.min-width-148{min-width:148px !important}.min-width-149{min-width:149px !important}.min-width-150{min-width:150px !important}.min-width-151{min-width:151px !important}.min-width-152{min-width:152px !important}.min-width-153{min-width:153px !important}.min-width-154{min-width:154px !important}.min-width-155{min-width:155px !important}.min-width-156{min-width:156px !important}.min-width-157{min-width:157px !important}.min-width-158{min-width:158px !important}.min-width-159{min-width:159px !important}.min-width-160{min-width:160px !important}.min-width-161{min-width:161px !important}.min-width-162{min-width:162px !important}.min-width-163{min-width:163px !important}.min-width-164{min-width:164px !important}.min-width-165{min-width:165px !important}.min-width-166{min-width:166px !important}.min-width-167{min-width:167px !important}.min-width-168{min-width:168px !important}.min-width-169{min-width:169px !important}.min-width-170{min-width:170px !important}.min-width-171{min-width:171px !important}.min-width-172{min-width:172px !important}.min-width-173{min-width:173px !important}.min-width-174{min-width:174px !important}.min-width-175{min-width:175px !important}.min-width-176{min-width:176px !important}.min-width-177{min-width:177px !important}.min-width-178{min-width:178px !important}.min-width-179{min-width:179px !important}.min-width-180{min-width:180px !important}.min-width-181{min-width:181px !important}.min-width-182{min-width:182px !important}.min-width-183{min-width:183px !important}.min-width-184{min-width:184px !important}.min-width-185{min-width:185px !important}.min-width-186{min-width:186px !important}.min-width-187{min-width:187px !important}.min-width-188{min-width:188px !important}.min-width-189{min-width:189px !important}.min-width-190{min-width:190px !important}.min-width-191{min-width:191px !important}.min-width-192{min-width:192px !important}.min-width-193{min-width:193px !important}.min-width-194{min-width:194px !important}.min-width-195{min-width:195px !important}.min-width-196{min-width:196px !important}.min-width-197{min-width:197px !important}.min-width-198{min-width:198px !important}.min-width-199{min-width:199px !important}.min-width-200{min-width:200px !important}.min-width-201{min-width:201px !important}.min-width-202{min-width:202px !important}.min-width-203{min-width:203px !important}.min-width-204{min-width:204px !important}.min-width-205{min-width:205px !important}.min-width-206{min-width:206px !important}.min-width-207{min-width:207px !important}.min-width-208{min-width:208px !important}.min-width-209{min-width:209px !important}.min-width-210{min-width:210px !important}.min-width-211{min-width:211px !important}.min-width-212{min-width:212px !important}.min-width-213{min-width:213px !important}.min-width-214{min-width:214px !important}.min-width-215{min-width:215px !important}.min-width-216{min-width:216px !important}.min-width-217{min-width:217px !important}.min-width-218{min-width:218px !important}.min-width-219{min-width:219px !important}.min-width-220{min-width:220px !important}.min-width-221{min-width:221px !important}.min-width-222{min-width:222px !important}.min-width-223{min-width:223px !important}.min-width-224{min-width:224px !important}.min-width-225{min-width:225px !important}.min-width-226{min-width:226px !important}.min-width-227{min-width:227px !important}.min-width-228{min-width:228px !important}.min-width-229{min-width:229px !important}.min-width-230{min-width:230px !important}.min-width-231{min-width:231px !important}.min-width-232{min-width:232px !important}.min-width-233{min-width:233px !important}.min-width-234{min-width:234px !important}.min-width-235{min-width:235px !important}.min-width-236{min-width:236px !important}.min-width-237{min-width:237px !important}.min-width-238{min-width:238px !important}.min-width-239{min-width:239px !important}.min-width-240{min-width:240px !important}.min-width-241{min-width:241px !important}.min-width-242{min-width:242px !important}.min-width-243{min-width:243px !important}.min-width-244{min-width:244px !important}.min-width-245{min-width:245px !important}.min-width-246{min-width:246px !important}.min-width-247{min-width:247px !important}.min-width-248{min-width:248px !important}.min-width-249{min-width:249px !important}.min-width-250{min-width:250px !important}.min-width-251{min-width:251px !important}.min-width-252{min-width:252px !important}.min-width-253{min-width:253px !important}.min-width-254{min-width:254px !important}.min-width-255{min-width:255px !important}.min-width-256{min-width:256px !important}.min-width-257{min-width:257px !important}.min-width-258{min-width:258px !important}.min-width-259{min-width:259px !important}.min-width-260{min-width:260px !important}.min-width-261{min-width:261px !important}.min-width-262{min-width:262px !important}.min-width-263{min-width:263px !important}.min-width-264{min-width:264px !important}.min-width-265{min-width:265px !important}.min-width-266{min-width:266px !important}.min-width-267{min-width:267px !important}.min-width-268{min-width:268px !important}.min-width-269{min-width:269px !important}.min-width-270{min-width:270px !important}.min-width-271{min-width:271px !important}.min-width-272{min-width:272px !important}.min-width-273{min-width:273px !important}.min-width-274{min-width:274px !important}.min-width-275{min-width:275px !important}.min-width-276{min-width:276px !important}.min-width-277{min-width:277px !important}.min-width-278{min-width:278px !important}.min-width-279{min-width:279px !important}.min-width-280{min-width:280px !important}.min-width-281{min-width:281px !important}.min-width-282{min-width:282px !important}.min-width-283{min-width:283px !important}.min-width-284{min-width:284px !important}.min-width-285{min-width:285px !important}.min-width-286{min-width:286px !important}.min-width-287{min-width:287px !important}.min-width-288{min-width:288px !important}.min-width-289{min-width:289px !important}.min-width-290{min-width:290px !important}.min-width-291{min-width:291px !important}.min-width-292{min-width:292px !important}.min-width-293{min-width:293px !important}.min-width-294{min-width:294px !important}.min-width-295{min-width:295px !important}.min-width-296{min-width:296px !important}.min-width-297{min-width:297px !important}.min-width-298{min-width:298px !important}.min-width-299{min-width:299px !important}.min-width-300{min-width:300px !important}.min-width-301{min-width:301px !important}.min-width-302{min-width:302px !important}.min-width-303{min-width:303px !important}.min-width-304{min-width:304px !important}.min-width-305{min-width:305px !important}.min-width-306{min-width:306px !important}.min-width-307{min-width:307px !important}.min-width-308{min-width:308px !important}.min-width-309{min-width:309px !important}.min-width-310{min-width:310px !important}.min-width-311{min-width:311px !important}.min-width-312{min-width:312px !important}.min-width-313{min-width:313px !important}.min-width-314{min-width:314px !important}.min-width-315{min-width:315px !important}.min-width-316{min-width:316px !important}.min-width-317{min-width:317px !important}.min-width-318{min-width:318px !important}.min-width-319{min-width:319px !important}.min-width-320{min-width:320px !important}.min-width-321{min-width:321px !important}.min-width-322{min-width:322px !important}.min-width-323{min-width:323px !important}.min-width-324{min-width:324px !important}.min-width-325{min-width:325px !important}.min-width-326{min-width:326px !important}.min-width-327{min-width:327px !important}.min-width-328{min-width:328px !important}.min-width-329{min-width:329px !important}.min-width-330{min-width:330px !important}.min-width-331{min-width:331px !important}.min-width-332{min-width:332px !important}.min-width-333{min-width:333px !important}.min-width-334{min-width:334px !important}.min-width-335{min-width:335px !important}.min-width-336{min-width:336px !important}.min-width-337{min-width:337px !important}.min-width-338{min-width:338px !important}.min-width-339{min-width:339px !important}.min-width-340{min-width:340px !important}.min-width-341{min-width:341px !important}.min-width-342{min-width:342px !important}.min-width-343{min-width:343px !important}.min-width-344{min-width:344px !important}.min-width-345{min-width:345px !important}.min-width-346{min-width:346px !important}.min-width-347{min-width:347px !important}.min-width-348{min-width:348px !important}.min-width-349{min-width:349px !important}.min-width-350{min-width:350px !important}.min-width-351{min-width:351px !important}.min-width-352{min-width:352px !important}.min-width-353{min-width:353px !important}.min-width-354{min-width:354px !important}.min-width-355{min-width:355px !important}.min-width-356{min-width:356px !important}.min-width-357{min-width:357px !important}.min-width-358{min-width:358px !important}.min-width-359{min-width:359px !important}.min-width-360{min-width:360px !important}.min-width-361{min-width:361px !important}.min-width-362{min-width:362px !important}.min-width-363{min-width:363px !important}.min-width-364{min-width:364px !important}.min-width-365{min-width:365px !important}.min-width-366{min-width:366px !important}.min-width-367{min-width:367px !important}.min-width-368{min-width:368px !important}.min-width-369{min-width:369px !important}.min-width-370{min-width:370px !important}.min-width-371{min-width:371px !important}.min-width-372{min-width:372px !important}.min-width-373{min-width:373px !important}.min-width-374{min-width:374px !important}.min-width-375{min-width:375px !important}.min-width-376{min-width:376px !important}.min-width-377{min-width:377px !important}.min-width-378{min-width:378px !important}.min-width-379{min-width:379px !important}.min-width-380{min-width:380px !important}.min-width-381{min-width:381px !important}.min-width-382{min-width:382px !important}.min-width-383{min-width:383px !important}.min-width-384{min-width:384px !important}.min-width-385{min-width:385px !important}.min-width-386{min-width:386px !important}.min-width-387{min-width:387px !important}.min-width-388{min-width:388px !important}.min-width-389{min-width:389px !important}.min-width-390{min-width:390px !important}.min-width-391{min-width:391px !important}.min-width-392{min-width:392px !important}.min-width-393{min-width:393px !important}.min-width-394{min-width:394px !important}.min-width-395{min-width:395px !important}.min-width-396{min-width:396px !important}.min-width-397{min-width:397px !important}.min-width-398{min-width:398px !important}.min-width-399{min-width:399px !important}.min-width-400{min-width:400px !important}.min-width-401{min-width:401px !important}.min-width-402{min-width:402px !important}.min-width-403{min-width:403px !important}.min-width-404{min-width:404px !important}.min-width-405{min-width:405px !important}.min-width-406{min-width:406px !important}.min-width-407{min-width:407px !important}.min-width-408{min-width:408px !important}.min-width-409{min-width:409px !important}.min-width-410{min-width:410px !important}.min-width-411{min-width:411px !important}.min-width-412{min-width:412px !important}.min-width-413{min-width:413px !important}.min-width-414{min-width:414px !important}.min-width-415{min-width:415px !important}.min-width-416{min-width:416px !important}.min-width-417{min-width:417px !important}.min-width-418{min-width:418px !important}.min-width-419{min-width:419px !important}.min-width-420{min-width:420px !important}.min-width-421{min-width:421px !important}.min-width-422{min-width:422px !important}.min-width-423{min-width:423px !important}.min-width-424{min-width:424px !important}.min-width-425{min-width:425px !important}.min-width-426{min-width:426px !important}.min-width-427{min-width:427px !important}.min-width-428{min-width:428px !important}.min-width-429{min-width:429px !important}.min-width-430{min-width:430px !important}.min-width-431{min-width:431px !important}.min-width-432{min-width:432px !important}.min-width-433{min-width:433px !important}.min-width-434{min-width:434px !important}.min-width-435{min-width:435px !important}.min-width-436{min-width:436px !important}.min-width-437{min-width:437px !important}.min-width-438{min-width:438px !important}.min-width-439{min-width:439px !important}.min-width-440{min-width:440px !important}.min-width-441{min-width:441px !important}.min-width-442{min-width:442px !important}.min-width-443{min-width:443px !important}.min-width-444{min-width:444px !important}.min-width-445{min-width:445px !important}.min-width-446{min-width:446px !important}.min-width-447{min-width:447px !important}.min-width-448{min-width:448px !important}.min-width-449{min-width:449px !important}.min-width-450{min-width:450px !important}.width-1-pc{width:1% !important;min-width:1% !important;max-width:1% !important}.width-2-pc{width:2% !important;min-width:2% !important;max-width:2% !important}.width-3-pc{width:3% !important;min-width:3% !important;max-width:3% !important}.width-4-pc{width:4% !important;min-width:4% !important;max-width:4% !important}.width-5-pc{width:5% !important;min-width:5% !important;max-width:5% !important}.width-6-pc{width:6% !important;min-width:6% !important;max-width:6% !important}.width-7-pc{width:7% !important;min-width:7% !important;max-width:7% !important}.width-8-pc{width:8% !important;min-width:8% !important;max-width:8% !important}.width-9-pc{width:9% !important;min-width:9% !important;max-width:9% !important}.width-10-pc{width:10% !important;min-width:10% !important;max-width:10% !important}.width-11-pc{width:11% !important;min-width:11% !important;max-width:11% !important}.width-12-pc{width:12% !important;min-width:12% !important;max-width:12% !important}.width-13-pc{width:13% !important;min-width:13% !important;max-width:13% !important}.width-14-pc{width:14% !important;min-width:14% !important;max-width:14% !important}.width-15-pc{width:15% !important;min-width:15% !important;max-width:15% !important}.width-16-pc{width:16% !important;min-width:16% !important;max-width:16% !important}.width-17-pc{width:17% !important;min-width:17% !important;max-width:17% !important}.width-18-pc{width:18% !important;min-width:18% !important;max-width:18% !important}.width-19-pc{width:19% !important;min-width:19% !important;max-width:19% !important}.width-20-pc{width:20% !important;min-width:20% !important;max-width:20% !important}.width-21-pc{width:21% !important;min-width:21% !important;max-width:21% !important}.width-22-pc{width:22% !important;min-width:22% !important;max-width:22% !important}.width-23-pc{width:23% !important;min-width:23% !important;max-width:23% !important}.width-24-pc{width:24% !important;min-width:24% !important;max-width:24% !important}.width-25-pc{width:25% !important;min-width:25% !important;max-width:25% !important}.width-26-pc{width:26% !important;min-width:26% !important;max-width:26% !important}.width-27-pc{width:27% !important;min-width:27% !important;max-width:27% !important}.width-28-pc{width:28% !important;min-width:28% !important;max-width:28% !important}.width-29-pc{width:29% !important;min-width:29% !important;max-width:29% !important}.width-30-pc{width:30% !important;min-width:30% !important;max-width:30% !important}.width-31-pc{width:31% !important;min-width:31% !important;max-width:31% !important}.width-32-pc{width:32% !important;min-width:32% !important;max-width:32% !important}.width-33-pc{width:33% !important;min-width:33% !important;max-width:33% !important}.width-34-pc{width:34% !important;min-width:34% !important;max-width:34% !important}.width-35-pc{width:35% !important;min-width:35% !important;max-width:35% !important}.width-36-pc{width:36% !important;min-width:36% !important;max-width:36% !important}.width-37-pc{width:37% !important;min-width:37% !important;max-width:37% !important}.width-38-pc{width:38% !important;min-width:38% !important;max-width:38% !important}.width-39-pc{width:39% !important;min-width:39% !important;max-width:39% !important}.width-40-pc{width:40% !important;min-width:40% !important;max-width:40% !important}.width-41-pc{width:41% !important;min-width:41% !important;max-width:41% !important}.width-42-pc{width:42% !important;min-width:42% !important;max-width:42% !important}.width-43-pc{width:43% !important;min-width:43% !important;max-width:43% !important}.width-44-pc{width:44% !important;min-width:44% !important;max-width:44% !important}.width-45-pc{width:45% !important;min-width:45% !important;max-width:45% !important}.width-46-pc{width:46% !important;min-width:46% !important;max-width:46% !important}.width-47-pc{width:47% !important;min-width:47% !important;max-width:47% !important}.width-48-pc{width:48% !important;min-width:48% !important;max-width:48% !important}.width-49-pc{width:49% !important;min-width:49% !important;max-width:49% !important}.width-50-pc{width:50% !important;min-width:50% !important;max-width:50% !important}.width-51-pc{width:51% !important;min-width:51% !important;max-width:51% !important}.width-52-pc{width:52% !important;min-width:52% !important;max-width:52% !important}.width-53-pc{width:53% !important;min-width:53% !important;max-width:53% !important}.width-54-pc{width:54% !important;min-width:54% !important;max-width:54% !important}.width-55-pc{width:55% !important;min-width:55% !important;max-width:55% !important}.width-56-pc{width:56% !important;min-width:56% !important;max-width:56% !important}.width-57-pc{width:57% !important;min-width:57% !important;max-width:57% !important}.width-58-pc{width:58% !important;min-width:58% !important;max-width:58% !important}.width-59-pc{width:59% !important;min-width:59% !important;max-width:59% !important}.width-60-pc{width:60% !important;min-width:60% !important;max-width:60% !important}.width-61-pc{width:61% !important;min-width:61% !important;max-width:61% !important}.width-62-pc{width:62% !important;min-width:62% !important;max-width:62% !important}.width-63-pc{width:63% !important;min-width:63% !important;max-width:63% !important}.width-64-pc{width:64% !important;min-width:64% !important;max-width:64% !important}.width-65-pc{width:65% !important;min-width:65% !important;max-width:65% !important}.width-66-pc{width:66% !important;min-width:66% !important;max-width:66% !important}.width-67-pc{width:67% !important;min-width:67% !important;max-width:67% !important}.width-68-pc{width:68% !important;min-width:68% !important;max-width:68% !important}.width-69-pc{width:69% !important;min-width:69% !important;max-width:69% !important}.width-70-pc{width:70% !important;min-width:70% !important;max-width:70% !important}.width-71-pc{width:71% !important;min-width:71% !important;max-width:71% !important}.width-72-pc{width:72% !important;min-width:72% !important;max-width:72% !important}.width-73-pc{width:73% !important;min-width:73% !important;max-width:73% !important}.width-74-pc{width:74% !important;min-width:74% !important;max-width:74% !important}.width-75-pc{width:75% !important;min-width:75% !important;max-width:75% !important}.width-76-pc{width:76% !important;min-width:76% !important;max-width:76% !important}.width-77-pc{width:77% !important;min-width:77% !important;max-width:77% !important}.width-78-pc{width:78% !important;min-width:78% !important;max-width:78% !important}.width-79-pc{width:79% !important;min-width:79% !important;max-width:79% !important}.width-80-pc{width:80% !important;min-width:80% !important;max-width:80% !important}.width-81-pc{width:81% !important;min-width:81% !important;max-width:81% !important}.width-82-pc{width:82% !important;min-width:82% !important;max-width:82% !important}.width-83-pc{width:83% !important;min-width:83% !important;max-width:83% !important}.width-84-pc{width:84% !important;min-width:84% !important;max-width:84% !important}.width-85-pc{width:85% !important;min-width:85% !important;max-width:85% !important}.width-86-pc{width:86% !important;min-width:86% !important;max-width:86% !important}.width-87-pc{width:87% !important;min-width:87% !important;max-width:87% !important}.width-88-pc{width:88% !important;min-width:88% !important;max-width:88% !important}.width-89-pc{width:89% !important;min-width:89% !important;max-width:89% !important}.width-90-pc{width:90% !important;min-width:90% !important;max-width:90% !important}.width-91-pc{width:91% !important;min-width:91% !important;max-width:91% !important}.width-92-pc{width:92% !important;min-width:92% !important;max-width:92% !important}.width-93-pc{width:93% !important;min-width:93% !important;max-width:93% !important}.width-94-pc{width:94% !important;min-width:94% !important;max-width:94% !important}.width-95-pc{width:95% !important;min-width:95% !important;max-width:95% !important}.width-96-pc{width:96% !important;min-width:96% !important;max-width:96% !important}.width-97-pc{width:97% !important;min-width:97% !important;max-width:97% !important}.width-98-pc{width:98% !important;min-width:98% !important;max-width:98% !important}.width-99-pc{width:99% !important;min-width:99% !important;max-width:99% !important}.width-100-pc{width:100% !important;min-width:100% !important;max-width:100% !important}.width-1-pc-w{width:1% !important}.width-2-pc-w{width:2% !important}.width-3-pc-w{width:3% !important}.width-4-pc-w{width:4% !important}.width-5-pc-w{width:5% !important}.width-6-pc-w{width:6% !important}.width-7-pc-w{width:7% !important}.width-8-pc-w{width:8% !important}.width-9-pc-w{width:9% !important}.width-10-pc-w{width:10% !important}.width-11-pc-w{width:11% !important}.width-12-pc-w{width:12% !important}.width-13-pc-w{width:13% !important}.width-14-pc-w{width:14% !important}.width-15-pc-w{width:15% !important}.width-16-pc-w{width:16% !important}.width-17-pc-w{width:17% !important}.width-18-pc-w{width:18% !important}.width-19-pc-w{width:19% !important}.width-20-pc-w{width:20% !important}.width-21-pc-w{width:21% !important}.width-22-pc-w{width:22% !important}.width-23-pc-w{width:23% !important}.width-24-pc-w{width:24% !important}.width-25-pc-w{width:25% !important}.width-26-pc-w{width:26% !important}.width-27-pc-w{width:27% !important}.width-28-pc-w{width:28% !important}.width-29-pc-w{width:29% !important}.width-30-pc-w{width:30% !important}.width-31-pc-w{width:31% !important}.width-32-pc-w{width:32% !important}.width-33-pc-w{width:33% !important}.width-34-pc-w{width:34% !important}.width-35-pc-w{width:35% !important}.width-36-pc-w{width:36% !important}.width-37-pc-w{width:37% !important}.width-38-pc-w{width:38% !important}.width-39-pc-w{width:39% !important}.width-40-pc-w{width:40% !important}.width-41-pc-w{width:41% !important}.width-42-pc-w{width:42% !important}.width-43-pc-w{width:43% !important}.width-44-pc-w{width:44% !important}.width-45-pc-w{width:45% !important}.width-46-pc-w{width:46% !important}.width-47-pc-w{width:47% !important}.width-48-pc-w{width:48% !important}.width-49-pc-w{width:49% !important}.width-50-pc-w{width:50% !important}.width-51-pc-w{width:51% !important}.width-52-pc-w{width:52% !important}.width-53-pc-w{width:53% !important}.width-54-pc-w{width:54% !important}.width-55-pc-w{width:55% !important}.width-56-pc-w{width:56% !important}.width-57-pc-w{width:57% !important}.width-58-pc-w{width:58% !important}.width-59-pc-w{width:59% !important}.width-60-pc-w{width:60% !important}.width-61-pc-w{width:61% !important}.width-62-pc-w{width:62% !important}.width-63-pc-w{width:63% !important}.width-64-pc-w{width:64% !important}.width-65-pc-w{width:65% !important}.width-66-pc-w{width:66% !important}.width-67-pc-w{width:67% !important}.width-68-pc-w{width:68% !important}.width-69-pc-w{width:69% !important}.width-70-pc-w{width:70% !important}.width-71-pc-w{width:71% !important}.width-72-pc-w{width:72% !important}.width-73-pc-w{width:73% !important}.width-74-pc-w{width:74% !important}.width-75-pc-w{width:75% !important}.width-76-pc-w{width:76% !important}.width-77-pc-w{width:77% !important}.width-78-pc-w{width:78% !important}.width-79-pc-w{width:79% !important}.width-80-pc-w{width:80% !important}.width-81-pc-w{width:81% !important}.width-82-pc-w{width:82% !important}.width-83-pc-w{width:83% !important}.width-84-pc-w{width:84% !important}.width-85-pc-w{width:85% !important}.width-86-pc-w{width:86% !important}.width-87-pc-w{width:87% !important}.width-88-pc-w{width:88% !important}.width-89-pc-w{width:89% !important}.width-90-pc-w{width:90% !important}.width-91-pc-w{width:91% !important}.width-92-pc-w{width:92% !important}.width-93-pc-w{width:93% !important}.width-94-pc-w{width:94% !important}.width-95-pc-w{width:95% !important}.width-96-pc-w{width:96% !important}.width-97-pc-w{width:97% !important}.width-98-pc-w{width:98% !important}.width-99-pc-w{width:99% !important}.width-100-pc-w{width:100% !important}.width-1-pc-minw{min-width:1% !important}.width-2-pc-minw{min-width:2% !important}.width-3-pc-minw{min-width:3% !important}.width-4-pc-minw{min-width:4% !important}.width-5-pc-minw{min-width:5% !important}.width-6-pc-minw{min-width:6% !important}.width-7-pc-minw{min-width:7% !important}.width-8-pc-minw{min-width:8% !important}.width-9-pc-minw{min-width:9% !important}.width-10-pc-minw{min-width:10% !important}.width-11-pc-minw{min-width:11% !important}.width-12-pc-minw{min-width:12% !important}.width-13-pc-minw{min-width:13% !important}.width-14-pc-minw{min-width:14% !important}.width-15-pc-minw{min-width:15% !important}.width-16-pc-minw{min-width:16% !important}.width-17-pc-minw{min-width:17% !important}.width-18-pc-minw{min-width:18% !important}.width-19-pc-minw{min-width:19% !important}.width-20-pc-minw{min-width:20% !important}.width-21-pc-minw{min-width:21% !important}.width-22-pc-minw{min-width:22% !important}.width-23-pc-minw{min-width:23% !important}.width-24-pc-minw{min-width:24% !important}.width-25-pc-minw{min-width:25% !important}.width-26-pc-minw{min-width:26% !important}.width-27-pc-minw{min-width:27% !important}.width-28-pc-minw{min-width:28% !important}.width-29-pc-minw{min-width:29% !important}.width-30-pc-minw{min-width:30% !important}.width-31-pc-minw{min-width:31% !important}.width-32-pc-minw{min-width:32% !important}.width-33-pc-minw{min-width:33% !important}.width-34-pc-minw{min-width:34% !important}.width-35-pc-minw{min-width:35% !important}.width-36-pc-minw{min-width:36% !important}.width-37-pc-minw{min-width:37% !important}.width-38-pc-minw{min-width:38% !important}.width-39-pc-minw{min-width:39% !important}.width-40-pc-minw{min-width:40% !important}.width-41-pc-minw{min-width:41% !important}.width-42-pc-minw{min-width:42% !important}.width-43-pc-minw{min-width:43% !important}.width-44-pc-minw{min-width:44% !important}.width-45-pc-minw{min-width:45% !important}.width-46-pc-minw{min-width:46% !important}.width-47-pc-minw{min-width:47% !important}.width-48-pc-minw{min-width:48% !important}.width-49-pc-minw{min-width:49% !important}.width-50-pc-minw{min-width:50% !important}.width-51-pc-minw{min-width:51% !important}.width-52-pc-minw{min-width:52% !important}.width-53-pc-minw{min-width:53% !important}.width-54-pc-minw{min-width:54% !important}.width-55-pc-minw{min-width:55% !important}.width-56-pc-minw{min-width:56% !important}.width-57-pc-minw{min-width:57% !important}.width-58-pc-minw{min-width:58% !important}.width-59-pc-minw{min-width:59% !important}.width-60-pc-minw{min-width:60% !important}.width-61-pc-minw{min-width:61% !important}.width-62-pc-minw{min-width:62% !important}.width-63-pc-minw{min-width:63% !important}.width-64-pc-minw{min-width:64% !important}.width-65-pc-minw{min-width:65% !important}.width-66-pc-minw{min-width:66% !important}.width-67-pc-minw{min-width:67% !important}.width-68-pc-minw{min-width:68% !important}.width-69-pc-minw{min-width:69% !important}.width-70-pc-minw{min-width:70% !important}.width-71-pc-minw{min-width:71% !important}.width-72-pc-minw{min-width:72% !important}.width-73-pc-minw{min-width:73% !important}.width-74-pc-minw{min-width:74% !important}.width-75-pc-minw{min-width:75% !important}.width-76-pc-minw{min-width:76% !important}.width-77-pc-minw{min-width:77% !important}.width-78-pc-minw{min-width:78% !important}.width-79-pc-minw{min-width:79% !important}.width-80-pc-minw{min-width:80% !important}.width-81-pc-minw{min-width:81% !important}.width-82-pc-minw{min-width:82% !important}.width-83-pc-minw{min-width:83% !important}.width-84-pc-minw{min-width:84% !important}.width-85-pc-minw{min-width:85% !important}.width-86-pc-minw{min-width:86% !important}.width-87-pc-minw{min-width:87% !important}.width-88-pc-minw{min-width:88% !important}.width-89-pc-minw{min-width:89% !important}.width-90-pc-minw{min-width:90% !important}.width-91-pc-minw{min-width:91% !important}.width-92-pc-minw{min-width:92% !important}.width-93-pc-minw{min-width:93% !important}.width-94-pc-minw{min-width:94% !important}.width-95-pc-minw{min-width:95% !important}.width-96-pc-minw{min-width:96% !important}.width-97-pc-minw{min-width:97% !important}.width-98-pc-minw{min-width:98% !important}.width-99-pc-minw{min-width:99% !important}.width-100-pc-minw{min-width:100% !important}.width-1-pc-maxw{max-width:1% !important}.width-2-pc-maxw{max-width:2% !important}.width-3-pc-maxw{max-width:3% !important}.width-4-pc-maxw{max-width:4% !important}.width-5-pc-maxw{max-width:5% !important}.width-6-pc-maxw{max-width:6% !important}.width-7-pc-maxw{max-width:7% !important}.width-8-pc-maxw{max-width:8% !important}.width-9-pc-maxw{max-width:9% !important}.width-10-pc-maxw{max-width:10% !important}.width-11-pc-maxw{max-width:11% !important}.width-12-pc-maxw{max-width:12% !important}.width-13-pc-maxw{max-width:13% !important}.width-14-pc-maxw{max-width:14% !important}.width-15-pc-maxw{max-width:15% !important}.width-16-pc-maxw{max-width:16% !important}.width-17-pc-maxw{max-width:17% !important}.width-18-pc-maxw{max-width:18% !important}.width-19-pc-maxw{max-width:19% !important}.width-20-pc-maxw{max-width:20% !important}.width-21-pc-maxw{max-width:21% !important}.width-22-pc-maxw{max-width:22% !important}.width-23-pc-maxw{max-width:23% !important}.width-24-pc-maxw{max-width:24% !important}.width-25-pc-maxw{max-width:25% !important}.width-26-pc-maxw{max-width:26% !important}.width-27-pc-maxw{max-width:27% !important}.width-28-pc-maxw{max-width:28% !important}.width-29-pc-maxw{max-width:29% !important}.width-30-pc-maxw{max-width:30% !important}.width-31-pc-maxw{max-width:31% !important}.width-32-pc-maxw{max-width:32% !important}.width-33-pc-maxw{max-width:33% !important}.width-34-pc-maxw{max-width:34% !important}.width-35-pc-maxw{max-width:35% !important}.width-36-pc-maxw{max-width:36% !important}.width-37-pc-maxw{max-width:37% !important}.width-38-pc-maxw{max-width:38% !important}.width-39-pc-maxw{max-width:39% !important}.width-40-pc-maxw{max-width:40% !important}.width-41-pc-maxw{max-width:41% !important}.width-42-pc-maxw{max-width:42% !important}.width-43-pc-maxw{max-width:43% !important}.width-44-pc-maxw{max-width:44% !important}.width-45-pc-maxw{max-width:45% !important}.width-46-pc-maxw{max-width:46% !important}.width-47-pc-maxw{max-width:47% !important}.width-48-pc-maxw{max-width:48% !important}.width-49-pc-maxw{max-width:49% !important}.width-50-pc-maxw{max-width:50% !important}.width-51-pc-maxw{max-width:51% !important}.width-52-pc-maxw{max-width:52% !important}.width-53-pc-maxw{max-width:53% !important}.width-54-pc-maxw{max-width:54% !important}.width-55-pc-maxw{max-width:55% !important}.width-56-pc-maxw{max-width:56% !important}.width-57-pc-maxw{max-width:57% !important}.width-58-pc-maxw{max-width:58% !important}.width-59-pc-maxw{max-width:59% !important}.width-60-pc-maxw{max-width:60% !important}.width-61-pc-maxw{max-width:61% !important}.width-62-pc-maxw{max-width:62% !important}.width-63-pc-maxw{max-width:63% !important}.width-64-pc-maxw{max-width:64% !important}.width-65-pc-maxw{max-width:65% !important}.width-66-pc-maxw{max-width:66% !important}.width-67-pc-maxw{max-width:67% !important}.width-68-pc-maxw{max-width:68% !important}.width-69-pc-maxw{max-width:69% !important}.width-70-pc-maxw{max-width:70% !important}.width-71-pc-maxw{max-width:71% !important}.width-72-pc-maxw{max-width:72% !important}.width-73-pc-maxw{max-width:73% !important}.width-74-pc-maxw{max-width:74% !important}.width-75-pc-maxw{max-width:75% !important}.width-76-pc-maxw{max-width:76% !important}.width-77-pc-maxw{max-width:77% !important}.width-78-pc-maxw{max-width:78% !important}.width-79-pc-maxw{max-width:79% !important}.width-80-pc-maxw{max-width:80% !important}.width-81-pc-maxw{max-width:81% !important}.width-82-pc-maxw{max-width:82% !important}.width-83-pc-maxw{max-width:83% !important}.width-84-pc-maxw{max-width:84% !important}.width-85-pc-maxw{max-width:85% !important}.width-86-pc-maxw{max-width:86% !important}.width-87-pc-maxw{max-width:87% !important}.width-88-pc-maxw{max-width:88% !important}.width-89-pc-maxw{max-width:89% !important}.width-90-pc-maxw{max-width:90% !important}.width-91-pc-maxw{max-width:91% !important}.width-92-pc-maxw{max-width:92% !important}.width-93-pc-maxw{max-width:93% !important}.width-94-pc-maxw{max-width:94% !important}.width-95-pc-maxw{max-width:95% !important}.width-96-pc-maxw{max-width:96% !important}.width-97-pc-maxw{max-width:97% !important}.width-98-pc-maxw{max-width:98% !important}.width-99-pc-maxw{max-width:99% !important}.width-100-pc-maxw{max-width:100% !important}.flex-grow-1{flex-grow:1}.flex-grow-2{flex-grow:2}.flex-grow-3{flex-grow:3}.flex-grow-4{flex-grow:4}.flex-grow-5{flex-grow:5}.flex-grow-6{flex-grow:6}.flex-grow-7{flex-grow:7}.flex-grow-8{flex-grow:8}.flex-grow-9{flex-grow:9}.flex-grow-10{flex-grow:10}.gap-0{gap:0px}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}.gap-5{gap:20px}.gap-6{gap:24px}.gap-7{gap:28px}.gap-8{gap:32px}.gap-9{gap:36px}.gap-10{gap:40px}html{font-family:Inter,sans-serif}[v-cloak]{opacity:0}.position-relative{position:relative}.v-application{background-color:var(--v-backgroundLight-base) !important;font-family:Inter,sans-serif}.bg-white{background-color:#fff}.mb-10{margin-bottom:10px}.mt-10{margin-top:10px}.cursor-pointer{cursor:pointer}.full-width{width:100%}.noselect{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.v-card{box-shadow:0 0 0 1px rgba(63,63,68,.04),0 1px 2px 0 rgba(63,63,68,.12);background-color:var(--v-background-base) !important}.btn-small{height:38px;width:38px;border-radius:4px}.btn-small.primary .v-icon{color:#fff !important}.v-alert{margin:auto !important}.align-right{text-align:right}.align-vertical{align-items:center}#main .theme--dark.v-btn.v-btn--has-bg{background-color:var(--v-background-base)}.v-card.data-table{box-shadow:none !important;border-radius:10px !important;border:1px solid var(--v-border-base) !important;overflow:hidden;background-color:var(--v-background-base) !important}.v-card.data-table .v-data-table{background:var(--v-background-base)}.v-card.data-table thead{font-weight:500}.v-card.data-table .v-card__text{padding:0 !important}.v-card.data-table .table-actions{text-align:right;align-items:center;justify-content:flex-end}.v-toolbar{background-color:var(--v-background-base) !important;border-bottom:1px solid var(--v-border-base) !important}.v-toolbar .v-toolbar__content{height:70px;background:var(--v-background-base);border-bottom:1px solid var(--v-border-base) !important}.v-toolbar v-menu__content.v-menu>.v-menu__content{top:65px}.v-toolbar .user-menu{padding:0 20px}.v-toolbar .user-menu.name{display:block;font-weight:500}.v-toolbar .user-menu.email{display:block;padding-bottom:20px}.v-toolbar .user-menu-logout{text-align:right;width:100%;padding-top:10px}.v-toolbar .user-menu-logout .v-btn{box-shadow:none;color:var(--v-byline-base)}.v-toolbar .user-menu-logout i{display:none}.v-toolbar .v-menu .user-menu .v-list-item{height:24px;font-size:14px}.v-toolbar .v-menu .user-menu.name span{font-weight:500}.page-header{font-weight:500;color:var(--v-title-base);font-size:1.7rem;margin:0 0 20px}.toolbar-user-avatar{position:relative !important;margin:auto 0 auto auto !important;background-color:rgba(0,0,0,0) !important;right:0}.toolbar-user-avatar i{font-size:30px !important}.toolbar-user-avatar .v-icon{height:34px !important;font-size:34px !important;width:34px !important}.v-skeleton-loader__table-tbody{background:var(--v-background-base) !important}.sidenav{background-color:var(--v-background-base) !important;max-width:240px;min-width:80px;padding-top:72px;border-right:1px solid var(--v-border-base) !important}.sidenav .theme--dark.v-list{background-color:rgba(0,0,0,0) !important}.sidenav .sidenav-item,.sidenav .v-list-item{display:flex;justify-content:center}.sidenav .v-list-item__title{letter-spacing:.6px;font-size:15px;padding-left:0;font-weight:500;color:var(--v-byline-base)}.sidenav .v-list{padding-top:0 !important}.sidenav .v-list.menu-list-bottom{position:absolute;bottom:0;left:0;right:0}.sidenav .v-list.menu-list-bottom hr{background-color:var(--v-border-base)}.sidenav .v-list.menu-list-bottom i{color:var(--v-title-base)}.sidenav .sidenav-item{margin:0 8px;min-height:48px;border-radius:14px}.sidenav .sidenav-item .v-list-item__title{color:var(--v-byline-base)}.sidenav .sidenav-item svg{color:var(--v-byline-base);font-size:18px;opacity:.8}.sidenav .sidenav-item.active .v-list-item__title{color:var(--v-navPrimary-base)}.sidenav .sidenav-item.active svg{color:var(--v-navPrimary-base);opacity:1}.sidenav .sidenav-item.brand{height:56px}@media screen and (width >= 960px){.sidenav .sidenav-item.brand{height:65px}}.sidenav .sidenav-item.brand .v-list-item__title{font-size:23px;line-height:26px;height:26px}.v-navigation-drawer--mini-variant .v-divider{display:block !important}.sidenav-item .v-btn{text-transform:none}.sidenav-logo{height:24px;display:block;width:auto}.v-avatar{cursor:pointer}.testmode-badge{background-color:var(--v-badgeRedBg-base);color:var(--v-badgeRedText-base);padding:2px 6px;border-radius:3px;margin-right:5px;font-size:13px}.alert-discreet{display:flex;margin:auto;border-style:none;padding:5px 16px;border-radius:3px;color:#fff;width:max-content}v-footer{display:block}v-footer v-card{display:flex;margin:auto;width:max-content;color:var(--v-title-base)}.instans-info{background-color:var(--v-badgeRedBg-base);font-size:12px;color:var(--v-badgeRedText-base);padding:4px;text-align:center;display:block}.instans-info .instans-type{font-weight:600}.instans-test{background-color:var(--v-badgeRedBg-base);color:var(--v-badgeRedText-base);font-size:13px;padding:6px 0 0;letter-spacing:1.2px;font-weight:600;text-align:center;display:block;line-height:1}.v-image__image--preload{filter:none !important}.btn-logout{box-shadow:none !important;color:var(--v-byline-base)}.btn-multi-check{height:34px !important;width:34px !important;min-width:auto !important;border-radius:6px;box-shadow:none}.btn-multi-check svg{font-size:19px !important}.btn-switch-wrapper{margin-right:30px !important;background:var(--v-backgroundLight-base) !important;padding:3px;border-radius:40px !important;border:1px solid var(--v-border-base)}.btn-switch-wrapper .v-btn{border-radius:40px;min-width:30px !important;width:30px !important;height:30px !important;background:rgba(0,0,0,0) !important;padding:0}.btn-switch-wrapper .v-btn svg{font-size:18px;color:var(--v-title-base) !important;opacity:.3}.btn-switch-wrapper .v-btn.active{background:var(--v-ctaInverted-base) !important;border:1px solid var(--v-border-base)}.btn-switch-wrapper .v-btn.active svg{opacity:1}.pb-top-toolbar{z-index:9 !important}.pb-tooltip .v-icon.v-icon{font-size:18px}.pb-tooltip.large .v-icon.v-icon{font-size:22px}.v-btn.btn-more.v-size--default{width:36px;min-width:36px}.v-btn.btn-more.v-size--default .v-icon{font-size:16px}.dialog-card{box-shadow:none !important;border:1px solid var(--v-border-base) !important}.dialog-card .inner-card{border:none !important;border-radius:0;box-shadow:none !important}.dialog-card .section-header{padding:10px 10px 10px 20px;font-size:16px;color:var(--v-title-base);border-bottom:1px solid var(--v-border-base)}.dialog-card .section-header.small{padding:10px 10px 2px 20px;font-size:14px;color:var(--v-title-base);border-top:1px solid var(--v-border-base);border-bottom:0 !important}.dialog-card .mini-table{width:100%}.dialog-card .mini-table tbody td{padding:5px 10px !important}.dialog-card .mini-table .field-name{font-weight:500;color:var(--v-title-base)}.dialog-card .mini-table .field-value{color:var(--v-title-base);text-align:right}.dialog-card .mini-table .field-value .field-unset{color:var(--v-byline-base)}.vue-page-header{font-weight:500;color:var(--v-title-base);font-size:1.8rem;margin-bottom:30px}.v-btn--icon svg,.v-btn--fab svg,.v-btn--icon.v-size--small svg,.v-btn--fab.v-size--small svg{width:16px !important;height:16px !important;font-size:16px !important}.flex-col{flex-direction:column}.border-light{border:1px solid var(--v-border-base)}.border-b-light{border-bottom:1px solid var(--v-border-base)}.border-l-light{border-left:1px solid var(--v-border-base)}.border-r-light{border-right:1px solid var(--v-border-base)}.border-t-light{border-top:1px solid var(--v-border-base)}.rounded{border-radius:7px}.bg-light-grey{background-color:var(--v-backgroundLight-base)}.test-mode-footer{box-shadow:none !important;background-color:rgba(0,0,0,0) !important}.theme--dark.v-list{background-color:var(--v-dialogBg-base) !important;color:#fff}.hide-number-arrows input::-webkit-outer-spin-button,.hide-number-arrows input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.hide-number-arrows input[type=number]{-moz-appearance:textfield}.inverted-tooltip.v-tooltip__content{background:#fff !important;color:var(--v-title-base) !important;border-radius:6px;font-size:14px;padding:6px 12px;border:1px solid var(--v-border-base);box-shadow:0 0 6px 5px rgba(0,0,0,.03),0 0 6px 5px rgba(0,0,0,.03);font-weight:500;opacity:1 !important}html.fortnox-branding .v-application.theme--dark{--v-primary-base: #00db33;--v-secondary-base: #00db33;--v-navPrimary-base: #00db33;--v-navBg-base: 0, 219, 51;--v-logoTitle-base: #00db33}html.fortnox-branding .v-application.theme--light{--v-primary-base: #327339;--v-secondary-base: #327339;--v-navPrimary-base: #327339;--v-navBg-base: 0, 219, 51;--v-logoTitle-base: #007533}.pb-select:not(.error-text) .v-text-field__details,.pb-text-field:not(.error-text) .v-text-field__details{display:none}.pb-select{min-width:150px}.pb-select .list-row .title{font-size:16px !important;font-weight:500;display:block}.pb-select .list-row .byline{color:var(--v-byline-base);font-size:14px}.pb-select .v-select__selections{position:relative !important}.pb-select input{position:absolute !important}.pb-select.error--text .v-input__append-inner,.pb-text-field.error--text .v-input__append-inner{display:none}.pb-select.error--text .v-text-field__details,.pb-text-field.error--text .v-text-field__details{margin-right:2px;display:flex !important;margin-bottom:0 !important;top:4px}.pb-select.error--text .v-input__slot,.pb-text-field.error--text .v-input__slot{position:relative}.pb-overflow-btn .v-select__slot{height:min-content !important}.pb-overflow-btn .v-input__append-inner{height:unset !important}.pb-overflow-btn .v-input__slot{border:none;box-shadow:none !important;padding:0 4px !important}.pb-overflow-btn fieldset{border:1px solid var(--v-border-base) !important}.pb-overflow-btn .v-select__selections{position:relative;margin-top:12px;margin-bottom:8px}.pb-overflow-btn .v-select__selections input{position:absolute}.pb-overflow-inner-btn{width:100%;background-color:rgba(0,0,0,0) !important;text-transform:none !important;letter-spacing:.3px !important;border-radius:0 !important;padding:4px 8px !important;height:auto !important}.pb-overflow-inner-btn .overflow-btn-menu-row .v-input--checkbox{margin:0;padding:0}.pb-checkbox{margin-top:0 !important;padding-top:0 !important}.select-title-byline{display:flex;flex-direction:column;padding:2px 0}.select-title-byline .title{font-size:16px !important;font-weight:500;line-height:1.4}.select-title-byline .byline{color:var(--v-byline-base);font-size:15px;font-weight:400}.pb-select fieldset,.pb-text-field fieldset,.pb-text-area fieldset{border:1px solid var(--v-border-base)}.input-wrapper{overflow:hidden;background:var(--v-backgroundLight-base) !important;border-radius:6px;font-size:15px}.custom-hint input{margin-top:25px !important}.custom-hint label{top:22px !important}.custom-hint .v-text-field__details{position:absolute;height:75%;align-items:center;top:3px !important;margin-bottom:0;pointer-events:none}.pb-text-field,.pb-select{background-color:rgba(0,0,0,0) !important}.pb-text-field .v-input__control,.pb-select .v-input__control{background-color:rgba(0,0,0,0) !important}.pb-text-field.v-input--is-disabled .v-input__append-inner{pointer-events:all}.pb-text-field.error--text fieldset,.pb-select.error--text fieldset,.pb-autocomplete.error--text fieldset{border-color:var(--v-badgeRedBg-base) !important}.pb-text-field.error--text svg,.pb-select.error--text svg,.pb-autocomplete.error--text svg{color:var(--v-badgeRedText-base) !important}.pb-select.wrapped{max-width:min-content}.pb-select.wrapped .v-select__selection.v-select__selection--comma{width:min-content;max-width:min-content;min-width:min-content}.range-search{width:100%}.range-search .v-input{margin-top:0}.range-search .filter-icon{vertical-align:middle;width:23px;height:auto;margin-left:4px}.range-search .range-search-text-field .v-input__slot{background:rgba(0,0,0,0) !important;box-shadow:none !important;padding:0 !important}.range-search .range-search-text-field input{padding-top:0}.range-search .v-input__icon.v-input__icon--append{margin-top:-2px !important}.filter-dropdown{padding:0}.filter-dropdown .v-list-item{padding:0 10px;border-bottom:1px solid var(--v-border-base)}.filter-dropdown .v-list-item .filter-badge{margin-right:8px;margin-left:0}.filter-dropdown .v-list-item .v-list-item__title{align-items:center}.filter-dropdown .filter-icon{width:26px;height:26px;margin-right:8px}.dense-radio-group label{font-size:1em;margin-bottom:0}.time-menu{min-width:70px !important}.datetime-pre-icon{height:40px;padding:8px 9px 0;background:var(--v-baackgroundLight-base)}.datetime-pre-icon svg{font-size:16px !important}.time-row .v-select__slot,.time-row fieldset,.time-row input{cursor:pointer}.time-row .timepicker{width:38px;border-radius:0}.time-row .timepicker .v-input__slot{padding:0 8px !important}.time-row .timepicker .v-input__append-inner{display:none}.time-row .timepicker .v-label{display:none}.time-row .time-separator{padding:6px 2px 0;background:var(--v-backgroundLight-base);font-weight:800;font-size:18px}.datetime-row{border:1px solid var(--v-border-base);border-radius:4px;overflow:hidden;max-width:max-content;background:#fff}.datetime-row .v-input__control{height:100%}.datetime-row .v-input__slot{background:rgba(0,0,0,0) !important;border-radius:0;height:100%}.datetime-row .v-select__slot,.datetime-row fieldset,.datetime-row input{cursor:pointer}.datetime-row fieldset{border-radius:0;border-color:var(--v-border-base);border-width:0 0 0 1px;background:rgba(0,0,0,0)}.datetime-row .date-field{width:118px}.datetime-row .date-field input{color:#000}.datetime-row .datetime-pre-icon svg{color:#000}.datetime-row .date-field.theme--dark{color:#000}.datetime-row .date-field.disable-input.v-input{pointer-events:initial !important}.datetime-row .date-field.disable-input.v-input input{color:#000}.datetime-row .reset{border-left:1px solid var(--v-border-base);background:var(--v-backgroundLight-base);display:flex;align-items:center}.datetime-row .reset .v-btn{width:26px}.datetime-row .reset .v-btn svg{width:14px;height:14px}.chip-wrapper{display:flex;flex-wrap:wrap}.chip-wrapper .chip{background:var(--v-backgroundLight-base);padding:4px 12px;font-size:14px;font-weight:500;margin:3px;border-radius:40px;color:var(--v-title-base)}.chip-wrapper.single{padding:0 12px}.global-notification{font-weight:500;border-style:none;padding:4px 12px 4px 4px;width:max-content;background-color:var(--v-globalNotificationBg-base);font-size:15px;margin:0 25px;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1);border-radius:8px;color:var(--v-globalNotification-base);min-width:200px;display:flex;align-items:center}.global-notification::before{content:\"❕\";vertical-align:sub;margin-right:13px;font-size:16px;background-color:var(--v-globalNotification-base);border-radius:7px;color:var(--v-globalNotificationBg-base);height:28px;display:inline-flex;width:28px;align-items:center;justify-content:center}.notification-logged-out{width:max-content;margin:auto}.global-notif-banner{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:99}.data-table .data-table-serverside table{width:100%}.data-table .data-table-serverside tbody tr:hover{box-shadow:0 2px 17px 0 rgba(0,0,0,.15) !important;background:rgba(0,0,0,0) !important}.data-table .data-table-serverside tbody tr.v-data-table__empty-wrapper:hover{box-shadow:none !important}.data-table .data-table-serverside tbody tr:hover .floating-action-wrapper{display:flex !important}.data-table .v-list-item__title{font-weight:500;font-size:14px}.data-table .action-icon{width:16px;color:var(--v-primary-base)}.data-table .category-filter .v-btn__content{justify-content:space-between;text-transform:initial;letter-spacing:normal;font-weight:normal;display:block}.data-table .category-filter .v-icon{display:flex;justify-content:flex-end}.data-table .category-filter i{font-size:18px;opacity:.54}.data-table .category-filter.grow-2{flex-grow:2}.data-table .category-filter.grow-2 .v-btn__content{display:flex}.data-table .category-filter.has-value .v-btn__content{display:block !important}.data-table th.show-lock{min-width:190px !important}.data-table .v-data-table.fixed-actions .v-data-table__empty-wrapper td:nth-last-child(1){border-left:0}.data-table .v-data-table.fixed-actions .v-data-table-header th:nth-last-child(1){position:sticky;right:0;z-index:3}.data-table .v-data-table.fixed-actions .data-filter-row th{border-top:none !important}.data-table .v-data-table.fixed-actions .data-filter-row th:nth-last-child(1){position:sticky;right:0;z-index:3}.data-table .first-data-column-locked tr:hover td,.data-table .with-select tr:hover td{background:var(--v-backgroundLight-base) !important}.data-table .first-data-column-locked td:nth-child(1),.data-table .first-data-column-locked th:nth-child(1),.data-table .with-select td:nth-child(1),.data-table .with-select th:nth-child(1){position:sticky !important;left:0;border-right:3px solid var(--v-border-base) !important;max-width:54px}.data-table .first-data-column-locked td:nth-child(1) .v-input--selection-controls__input,.data-table .first-data-column-locked th:nth-child(1) .v-input--selection-controls__input,.data-table .with-select td:nth-child(1) .v-input--selection-controls__input,.data-table .with-select th:nth-child(1) .v-input--selection-controls__input{margin:0 !important}.data-table .first-data-column-locked th:nth-child(1),.data-table .with-select th:nth-child(1){z-index:5}.data-table .first-data-column-locked td:nth-child(1),.data-table .with-select td:nth-child(1){z-index:4}.data-table .first-data-column-locked.with-select td:nth-child(1),.data-table .first-data-column-locked.with-select th:nth-child(1){border-right:1px solid var(--v-border-base) !important}.data-table .first-data-column-locked.with-select th:nth-child(2){z-index:4;border-right:1px solid var(--v-border-base) !important}.data-table .first-data-column-locked.with-select td:nth-child(2){z-index:4;background-color:var(--v-background-base)}.data-table .first-data-column-locked.with-select th:nth-child(1){border-right:1px solid var(--v-border-base) !important}.data-table .first-data-column-locked.with-select td:nth-child(2),.data-table .first-data-column-locked.with-select th:nth-child(2){position:sticky !important;left:41px;border-right:3px solid var(--v-border-base) !important}.data-table table{border-collapse:separate !important;width:100%;table-layout:fixed}.data-table .v-data-footer{margin-right:0 !important}.data-table .v-data-table{overflow:auto;border-radius:0}.data-table th[role=columnheader].sortable{position:relative;min-width:150px}.data-table th[role=columnheader].sortable span{width:75%;display:inline-block}.data-table th[role=columnheader].sortable i{position:absolute;bottom:35%;right:5px}.data-table th[role=columnheader].sortable i.v-data-table-header__icon{opacity:.8}.data-table th[role=columnheader].sortable.active i.v-data-table-header__icon{opacity:1}.data-table th[role=columnheader].sortable:hover{color:#000}.data-table th[role=columnheader].sortable:hover i.v-data-table-header__icon{opacity:1;color:#000}.data-table .v-data-table--fixed-header th[role=columnheader].sortable{position:sticky}.data-table .v-data-table.v-data-table--fixed-header thead th{background:var(--v-background-base) !important;box-shadow:none;padding:0}.data-table .table-sub-header{font-size:11px;background-color:rgba(0,0,0,0);border-bottom:1px solid var(--v-border-base)}.data-table .table-sub-header th{height:auto !important;padding:4px 10px !important;font-weight:600}.data-table .v-data-table-header tr{font-size:13px;background-color:var(--v-backgroundTableHeader-base)}.data-table .v-data-table-header tr th{padding:4px 8px !important;font-size:12px !important;color:var(--v-title-base) !important;letter-spacing:.3px;font-weight:500;height:34px !important;background-color:var(--v-backgroundTableHeader-base)}.data-table .data-filter-row{background:var(--v-backgroundTableHeader-base);position:relative;border-bottom:1px solid var(--v-border-base);border-top:none !important}.data-table .data-filter-row .filter-input{min-width:100px;margin:0}.data-table .data-filter-row .filter-input .v-input{font-size:14px}.data-table .data-filter-row .filter-input img{margin-right:8px}.data-table .data-filter-row .v-input__control{border-radius:4px;padding:2px 2px 2px 4px;background-color:var(--v-backgroundLight-base);border:1px solid var(--v-border-base);font-size:14px;font-weight:500}.data-table .data-filter-row .v-input__control .v-input__slot::before{display:none}.data-table .data-filter-row .v-input__control .v-input__prepend-inner i{font-size:20px}.data-table .data-filter-row .v-text-field--box>.v-input__control>.v-input__slot,.data-table .data-filter-row .v-text-field--full-width>.v-input__control>.v-input__slot,.data-table .data-filter-row .v-text-field--outline>.v-input__control>.v-input__slot{min-height:28px;max-height:28px;border-width:0 !important}.data-table .data-filter-row .v-text-field .v-input__append-inner{margin-top:0 !important}.data-table .data-filter-row .v-select .v-select__selections{padding-top:0 !important}.data-table .data-filter-row .v-select__selection--comma{font-size:13px}.data-table .data-filter-row th{border-top:1px solid var(--v-border-base) !important;border-bottom:1px solid var(--v-border-base) !important;position:sticky !important;top:3px;background:var(--v-backgroundLight-base);z-index:3}.data-table .data-filter-row .v-icon{color:var(--v-byline-base) !important;font-size:12px !important}.data-table .data-filter-row .v-text-field{padding:4px 0 !important}.data-table .data-filter-row input::placeholder{color:var(--v-title-base);opacity:.9;font-weight:500;font-size:13px}.data-table .numeric-chip.v-chip.v-size--default{font-size:13px;color:var(--v-title-base);padding:8px;height:24px;border-radius:8px !important;background:var(--v-backgroundLight-base) !important}.data-table .date-cell{min-width:150px}.data-table tbody tr{border-left:1px solid var(--v-border-base) !important;border-right:1px solid var(--v-border-base) !important}.data-table tbody td.fixed{background:rgba(0,0,0,0) !important}.data-table .text-right{text-align:right !important}.data-table .v-card__title{padding:8px 16px}.data-table .table-search{max-width:550px;margin:0;padding:0}.data-table .v-input--checkbox.v-input--selection-controls{padding-top:0 !important}.data-table .v-btn--floating.v-btn-small{height:38px;width:38px;border-radius:4px;border:1px solid var(--v-border-base)}.data-table .column{font-weight:600}.data-table .v-datatable__actions{border:1px solid var(--v-border-base)}.data-table .v-datatable__actions:last-child{margin-bottom:30px}.data-table .v-btn--small .v-icon{font-size:18px}.data-table .v-card__text{padding:0}.data-table div.d-contents td.table-actions.fixed{padding:0 !important}.data-table .count-badge{background:var(--v-backgroundLight-base);padding:2px 10px;font-weight:500;border-radius:10px;font-size:13px}.data-table .v-btn.show-columns{z-index:9;position:absolute;right:0;height:46px !important;box-shadow:none;padding:6px !important;min-width:auto !important;border-left:1px solid var(--v-border-base) !important;border-radius:0;background:var(--v-background-base) !important;opacity:0}.data-table .v-btn.show-columns svg{font-size:14px !important}.data-table .v-btn.show-columns:hover{opacity:1}.data-table thead{background:var(--v-background-base)}.data-table .date-filter{background-color:var(--v-dialogBg-base) !important}.data-table .date-search .prepend-inner-icon{font-size:16px;color:var(--v-byline-base) !important}.data-table .data-table .v-data-table.v-data-table--fixed-header thead th,.data-table .v-data-table--fixed-header th.sortable[role=columnheader]{background-color:var(--v-backgroundTableHeader-base) !important;border-top:none !important}.data-table .td-secret{opacity:.4}.data-table .status-badge{display:block;padding:4px 0;min-width:100px;font-size:.8rem;font-weight:500;border-radius:20px;text-align:center;letter-spacing:.1px;color:var(--v-title-base);width:100%}.data-table .status-badge.active{background:var(--v-badgeGreenBg-base) !important;color:var(--v-badgeGreenText-base)}.data-table .status-badge.inactive{background:var(--v-badgeRedBg-base) !important;color:var(--v-badgeRedText-base)}.data-table .table-actions{text-align:right;padding:0 !important;position:absolute;right:0;align-items:center;justify-content:flex-end}.data-table .table-actions .d-flex.justify-end{gap:6px}.data-table .table-actions .v-size--small i{font-size:14px !important}.data-table .table-actions .table-actions-inner{display:none !important;position:absolute;align-items:center;right:0;top:0;bottom:0;padding:0 10px 0 20px}.data-table .table-actions .table-actions-inner .v-btn{border:1px solid var(--v-border-base);color:var(--v-dialogBg-base);background:var(--v-ctaInverted-base)}.data-table .table-actions .table-actions-inner .v-btn svg{font-size:14px;width:14px;color:var(--v-primary-base)}.data-table .table-actions .v-btn{margin:0}.data-table .table-actions .v-btn:hover{background-color:var(--v-border-base)}.data-table .table-actions .v-icon{height:18px;width:18px}.data-table tr:hover .table-actions .table-actions-inner{display:flex !important}.data-table .no-table-wrap table{width:unset !important}.data-table .table-chip-dark{background:var(--v-backgroundLight-base);padding:4px 8px;font-weight:500;font-size:12px;text-align:left;border-radius:6px;line-height:1.2;color:var(--v-title-base)}.data-table .table-chip-dark .assistant-table-card{display:flex;gap:10px;align-items:center}.data-table .column-cta-4{width:190px}.data-table .column-cta-3{width:150px}.data-table .column-cta-2{width:110px}.data-table .column-small{width:84px}.data-table .column-date{width:180px}.data-table .v-input__append-inner{align-self:center}.data-table .v-btn--floating.v-btn--small{height:38px;width:38px;border-radius:4px;border:1px solid var(--v-border-base)}.data-table .btn-small{margin-right:10px;height:38px;width:38px;border-radius:4px}.data-table .btn-small.primary{background-color:var(--v-primary-base)}.data-table .btn-small.primary .v-icon{color:#fff !important}.data-table table.v-table thead tr{height:42px}.data-table .table-actions.fixed{background-color:rgba(0,0,0,0) !important;box-shadow:none !important}.data-table.full-width table{width:100%}.table-auto-wrapper table{table-layout:auto !important}.table-auto-wrapper table .v-data-table-header tr th{padding:0 16px !important;background:var(--v-dialogBg-base) !important;white-space:nowrap;font-size:12px !important;height:28px !important}.table-auto-wrapper table .v-data-table-header tr th .fa-sort-up{margin-top:4px}.table-auto-wrapper table td{white-space:nowrap;padding:0 16px !important}table>tbody>tr>td.fixed:nth-last-child(1){position:sticky !important;right:0;z-index:1;-webkit-box-shadow:-4px 2px 7px -1px rgba(0,0,0,.14);-moz-box-shadow:-4px 2px 7px -1px rgba(0,0,0,.14);box-shadow:-4px 2px 7px -1px rgba(0,0,0,.14)}.data-table-date-time{min-width:150px}.v-data-table__wrapper>table>tbody>tr:hover{background:none !important}.data-table-serverside .v-data-table__wrapper{position:relative}.ua-safari .data-filter-row th{top:0}tr.v-lazy{height:15px;position:relative !important}.d-contents{display:contents;position:relative}.d-contents .floating-action-wrapper{position:sticky;display:none;right:0;top:0;bottom:0;min-height:46px;padding-right:14px}.d-contents .floating-action-wrapper .v-btn{background:var(--v-backgroundLight-base)}.d-contents .floating-action-wrapper .v-btn svg{width:13px;color:var(--v-title-base) !important}.data-table .v-data-table__wrapper table{border-collapse:separate}.data-table-no-data{position:absolute;top:40%;width:100%;margin-top:20px}.data-table-no-data span img{max-width:86px;margin-bottom:14px}.data-table-no-data span h2{font-size:15px;color:var(--v-title-base);font-weight:500}@media(height <= 660px){.data-table-no-data img{display:none}}@media(height <= 550px){.data-table-no-data{margin:20px}}@media(height <= 420px){.data-table-no-data h2{display:none}}.date-search{width:100%;height:100%;margin:0;padding:4px 4px 4px 6px;cursor:text;background-color:var(--v-backgroundLight-base);border:1px solid var(--v-border-base);border-radius:4px;min-height:36px;align-content:center}.date-search .prepend-inner-icon{font-size:16px}.date-search .v-card{background:rgba(0,0,0,0) !important}.date-search .date-wrapper{margin:0 8px;border-radius:6px;padding-left:10px;display:flex;max-height:38px;min-width:160px}.date-search .date-wrapper .value-wrapper{padding:2px 4px;align-self:center}.date-search .date-wrapper .value-wrapper .dash-before{margin-left:-12px;font-weight:500}.date-search .date-wrapper .value-wrapper .dash-after{font-weight:500}.date-search .date-wrapper .button{width:30px;display:flex;border-left:1px solid var(--v-border-base);align-items:center;justify-content:center}.date-search .date-wrapper .button .v-btn{background-color:rgba(0,0,0,0) !important;width:30px;min-width:30px}.date-search .date-wrapper .button .v-icon,.date-search .date-wrapper .button svg{font-size:13px;color:var(--v-byline-base)}.date-search .value{font-size:13px;display:block;line-height:1.3}.datetime-row{border:1px solid var(--v-border-base);border-radius:4px;overflow:hidden;max-width:max-content}.datetime-row .v-input__control{height:100%}.datetime-row .v-input__slot{background:rgba(0,0,0,0) !important;border-radius:0;height:100%}.datetime-row .v-select__slot,.datetime-row fieldset,.datetime-row input{cursor:pointer}.datetime-row fieldset{border-radius:0;border-color:var(--v-border-base);border-width:0 0 0 1px;background:rgba(0,0,0,0)}.datetime-row .date-field{width:118px}.datetime-row .date-field.disable-input.v-input{pointer-events:initial !important}.datetime-row .date-field.disable-input.v-input input{color:#000}.datetime-row .reset{border-left:1px solid var(--v-border-base);background:var(--v-backgroundLight-base);display:flex;align-items:center}.datetime-row .reset .v-btn{width:26px}.datetime-row .reset .v-btn svg{width:14px;height:14px}.range-search{width:100%}.range-search .v-input{margin-top:0}.range-search .filter-icon{vertical-align:middle;width:23px;height:auto;margin-left:4px}.range-search .range-search-text-field .v-input__slot{background:rgba(0,0,0,0) !important;box-shadow:none !important}.range-search .range-search-text-field input{padding-top:0}.range-search .v-input__icon.v-input__icon--append{margin-top:-2px !important}.datetime-pre-icon{height:40px;background:var(--v-backgroundLight-base);display:flex;align-items:center;padding:0 8px}.datetime-pre-icon svg{font-size:16px !important}.v-data-table.fixed-actions .v-data-table__empty-wrapper td:nth-last-child(1){border-left:0}.v-data-table.fixed-actions td:nth-last-child(1){background:rgba(0,0,0,0) !important}.v-data-table.fixed-actions .v-data-table-header th:nth-last-child(1){position:sticky;right:0;z-index:3}tbody td.fixed{background:var(--v-backgroundLight-base) !important}table>tbody>tr>td.fixed:nth-last-child(1),table>tbody>tr.v-lazy>div td.fixed:nth-last-child(1){position:sticky !important;right:0;z-index:1;background:#fff;-webkit-box-shadow:-1px 0 3px -1px rgba(0,0,0,.19);-moz-box-shadow:-1px 0 3px -1px rgba(0,0,0,.19);box-shadow:-1px 0 3px -1px rgba(0,0,0,.19)}.dialog-wrapper .v-card{background:var(--v-dialogBg-base) !important}.dialog-content{overflow:auto;background:var(--v-dialogBgInner-base)}.dialog-content .v-text-field__details{margin-bottom:0}.dialog-content .v-input--selection-controls{margin-top:0}.dialog-content .v-input__slot{margin-bottom:4px !important}.dialog-content .checkboxes .v-messages{display:none}.dlg-credentials .dlg-setting-block{display:flex;gap:10px;margin-bottom:16px}.dlg-credentials .dlg-setting-block .details{min-width:190px;display:flex;gap:4px}.dlg-credentials .dlg-setting-block .fa-circle-question{color:var(--v-title-base)}.dlg-credentials .dlg-setting-block .v-input{width:100%}.dlg-credentials .dlg-setting-block fieldset{background:var(--v-background-base)}.dlg-credentials .dlg-setting-block .medium-width{width:280px}.dlg-credentials .dlg-setting-block .title-label{display:block;font-weight:500;font-size:15px;color:var(--v-title-base)}.dlg-credentials .dlg-setting-block .title-label svg{font-size:16px}.dlg-credentials .dlg-setting-block .byline-label{display:block;color:var(--v-byline-base)}.dlg-credentials .btn-small{height:38px;width:auto;border-radius:4px;padding:0 12px;color:var(--v-byline-base) !important}.dlg-credentials .btn-small.primary{color:#fff !important}.dlg-credentials .btn-small.primary .v-icon{color:#fff !important}.opt-group-title{display:block;font-weight:500;padding:16px 0;font-size:16px}.opt-group-header{display:flex;align-items:center;padding:6px 12px;border-bottom:1px solid var(--v-border-base)}.opt-group-header .v-icon.v-icon{font-size:20px}.opt-group-header .v-input__slot{margin-bottom:0 !important;padding-bottom:0 !important}.opt-group{display:flex;flex-direction:column;border:1px solid var(--v-border-base);border-radius:6px;overflow:hidden}.opt-group .group-header{padding:0 6px;border-bottom:1px solid var(--v-border-base);background:var(--v-backgroundLight-base);display:flex;align-items:center}.opt-group .group-header .v-btn{padding:0 10px;min-height:auto;height:auto;text-transform:none;letter-spacing:.4px}.opt-group .group-header .title-label{font-weight:500;color:1px solid var(--v-title-base);font-size:14px}.opt-group .group-header .v-input__slot{margin:0 !important}.opt-group .group-header .v-icon.v-icon{font-size:20px}.opt-group .group-item{padding:2px 12px}.opt-group .group-item .v-icon.v-icon{font-size:20px}.indent{padding-left:30px}.dialog-header{padding:20px !important;border-bottom:1px solid var(--v-border-base);display:flex;align-items:center;flex-direction:row;width:100%}.dialog-header .dialog-header-main{width:100%;position:relative}.dialog-header .dialog-header-main .issue-wrapper{display:flex;align-items:center;gap:10px;border:1px solid var(--v-border-base);padding:4px 16px 4px 10px;margin-right:-16px;border-radius:6px}.dialog-header .dialog-header-main .issue-wrapper .issue-inner-wrapper{display:flex;align-content:center;gap:4px}.dialog-header .dialog-header-main .issue-wrapper .issue-inner-wrapper .v-label{font-size:14px}.dialog-header .dialog-header-main .issue-wrapper .issue-inner-wrapper .v-input__slot{margin:0}.dialog-header .dialog-header-main .issue-wrapper .issue-inner-wrapper .v-input--switch{margin:0;padding:0}.dialog-header .v-card__title{padding:0;position:relative}.dialog-header .v-card__title.headline{font-size:1.3rem !important}.dialog-header .v-card__subtitle{padding:0 0 16px}.dialog-header.small{padding:0 20px}.dialog-header.with-subtitle{padding:0 20px}.dialog-header.-section-title{font-size:16px;letter-spacing:.2px;font-weight:500;color:#444}.v-dialog fieldset{padding-left:8px !important}.card-wrapper{border:1px solid var(--v-border-base);background:var(--v-dialogBg-base) !important;border-radius:6px;overflow:hidden}.card-wrapper .no-search-results{text-align:center;padding:30px 0}.card-wrapper .card-header{border-bottom:1px solid var(--v-border-base);display:flex;padding:12px 22px 12px 16px;align-items:center}.card-wrapper .card-header .card-title{font-size:1rem !important;font-weight:500 !important;letter-spacing:.0313em !important}.checkbox-list{padding:10px;display:flex;flex-direction:column;gap:10px;background:var(--v-background-table-header-base)}.checkbox-list .opt-group-wrapper{display:flex;flex-direction:row;background:var(--v-dialogBg-base) !important}.checkbox-list .opt-group-wrapper .opt-group-wrapper-item{flex:1}.checkbox-list .opt-group-wrapper .opt-group-wrapper-item:nth-of-type(2){border-left:1px solid var(--v-border-base);border-right:1px solid var(--v-border-base)}.checkbox-list table{width:100%;border-collapse:collapse}.checkbox-list table th{text-align:left;padding:2px 6px;font-size:13px;font-weight:500;border-bottom:1px solid var(--v-border-base);background-color:var(--v-backgroundLight-base) !important;color:var(--v-byline-base)}.checkbox-list table .v-input--selection-controls__input{margin-right:2px !important}.checkbox-list table .v-input__slot{margin:0 !important}.checkbox-list table .v-input{margin:0 !important;padding:0 !important}.checkbox-list table .v-input label{font-size:14px}.checkbox-list .opt-row{border:1px solid var(--v-border-base) !important;padding:8px;display:flex;margin:0 16px;gap:10px;border-radius:6px;align-items:center;flex-flow:wrap;background:var(--v-background-base)}.checkbox-list .opt-row .opt-type{width:70px;color:var(--v-title-base);font-weight:600;text-transform:none;font-size:14px;padding-left:6px;letter-spacing:.3px}.checkbox-list .opt-row .v-btn.active{background-color:var(--v-secondary-base) !important;color:#fff !important}.checkbox-list .opt-row .v-btn.active.theme--light.v-btn--disabled.v-btn--has-bg{background-color:var(--v-primary-darken3) !important}.checkbox-list .opt-row .v-btn{height:auto !important;border-radius:8px;letter-spacing:.5px;font-size:13px;padding:4px 10px;font-weight:500 !important;color:var(--v-byline-base);text-transform:inherit}.checkbox-list .opt-row.plain{border:none !important;padding:0;margin-bottom:8px;max-width:fit-content}.checkbox-list .no-search-results{height:60px;text-align:center;display:flex;align-items:center;justify-content:center;color:var(--v-byline-base);border:1px solid var(--v-border-base)}.swal2-modal{padding:18px;width:auto;border-radius:16px}.swal2-modal .swal2-icon{display:none !important}.swal2-modal .swal2-title{display:flex;font-size:20px !important;color:#333;margin-bottom:0 !important}.swal2-modal #swal2-content{display:block;font-weight:400;max-width:70%;font-size:16px;color:#676767;margin:6px auto auto}.swal2-modal .swal2-styled{min-width:120px}.swal2-modal .swal2-cancel{background-color:var(--v-backgroundLight-base) !important;color:var(--v-byline-base) !important}.swal2-modal .swal2-confirm{background-color:var(--v-primary-base) !important}.swal2-modal.delete-dlg .swal2-confirm{background-color:var(--v-warning-base) !important}.action-dialog{padding-bottom:0 !important;border-radius:10px !important}.action-dialog .v-card__title{text-wrap:balance;line-height:1.4;overflow-wrap:anywhere;padding-bottom:2px !important}.action-dialog .v-card__actions{margin-bottom:16px;margin-top:6px}.action-dialog .progress-byline{margin-top:-16px;display:block;z-index:9;position:inherit;padding:10px}.action-dialog .error-wrapper{border:1px solid var(--v-border-base);background:var(--v-background-light);border-radius:6px;overflow-y:auto;max-height:400px;height:100%;display:flex;position:relative;padding:0 !important}.action-dialog .error-wrapper .v-textarea textarea{padding-right:12px !important}.action-dialog .error-wrapper .v-textarea fieldset{border:none !important}.action-dialog .error-wrapper .v-btn{min-width:34px !important;position:sticky;right:8px;top:8px;width:34px;height:34px;color:var(--v-black-base);background:#fff;border:1px solid var(--v-border-base);border-radius:4px}.action-dialog .icon-wrapper{width:70px;height:70px;min-height:70px;display:flex;margin:25px auto 0;border-radius:50% !important;justify-content:center;align-items:center;background:#f5f5ff}.action-dialog .icon-wrapper svg{color:var(--v-secondary-base)}.action-dialog .icon-wrapper.delete,.action-dialog .icon-wrapper.archive,.action-dialog .icon-wrapper.error{background:#fff2f3}.action-dialog .icon-wrapper.delete svg,.action-dialog .icon-wrapper.archive svg,.action-dialog .icon-wrapper.error svg{color:var(--v-error-base)}.action-dialog .icon-wrapper.confirm svg{font-size:30px}.action-dialog .delete-confirm-wrapper{margin:20px auto 0;gap:8px}.action-dialog .delete-confirm-wrapper .pb-text-field{max-width:140px;margin:15px auto 0;font-size:16px}.action-dialog .delete-confirm-wrapper .pb-text-field input{text-align:center}.action-dialog .delete-confirm-wrapper .delete-confirm-text{text-transform:uppercase;font-weight:600;color:var(--v-error-base)}.action-dialog .v-btn{min-width:110px !important}.action-dialog-loading{padding:12px 16px !important}.action-dialog-loading .v-card__title{font-size:1rem !important;padding:0 !important;line-height:1.7}.action-dialog-loading .v-card__text{padding:8px !important}.draggable-dialog .dialog-header{position:relative}.v-icon__component{width:16px !important;height:16px !important}.v-icon.v-icon{font-size:16px !important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.v-card__title[data-v-2b09f4be]{margin:0 auto}.v-card__actions[data-v-2b09f4be]{display:flex;gap:4px;width:100%;justify-content:center}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.container[data-v-1b059a6a]{padding:30px 40px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.clipboard-btn[data-v-5b102c5a]{border:1px solid var(--v-border-base);border-radius:3px;background-color:#fff !important;padding:6px !important;max-height:24px !important;min-width:auto !important;min-height:auto !important;height:auto !important}.clipboard-btn .v-btn__content span[data-v-5b102c5a]{font-size:13px;margin-left:6px;color:var(--v-primary-base) !important;letter-spacing:.3px;text-transform:none}.clipboard-btn svg[data-v-5b102c5a]{font-size:15px !important;color:var(--v-primary-base) !important}.clipboard-btn.large-absolute[data-v-5b102c5a]{position:absolute;top:10px;right:26px;max-height:32px !important;width:32px !important}.clipboard-btn.large-absolute svg[data-v-5b102c5a]{width:16px !important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.page-404 .image-404{margin:30px auto;max-width:320px}.page-404 .content-404{max-width:560px;text-align:center;margin:6% auto}.page-404 .button-back{width:100%;color:var(--v-title-base);border:1px solid var(--v-border-base);padding:12px 40px;text-transform:uppercase;font-weight:500;border-radius:3px;text-decoration:none}.page-404 h3{font-size:50px;text-align:center;margin:30px auto 15px}.page-404 p{font-size:18px;font-weight:400;text-align:center;margin-bottom:45px;color:var(--v-byline-base)}.page-404 .exception-box{background:#fff;padding:20px;border:1px solid var(--v-border-base);border-radius:20px;text-align:start;width:50%;min-width:min-content;margin:0 auto;white-space:normal}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.logo-fortnox-wl[data-v-0c9fc3c6]{display:flex;gap:10px;align-items:center}.logo-fortnox-wl .sidenav-logo[data-v-0c9fc3c6]{height:34px !important}.logo-fortnox-wl .logo-title[data-v-0c9fc3c6]{display:block;width:auto;color:var(--v-logoTitle-base);font-weight:600;font-size:15px}.v-avatar svg[data-v-0c9fc3c6]{width:26px;color:var(--v-title-base)}.v-content[data-v-0c9fc3c6],.v-main[data-v-0c9fc3c6]{padding-top:64px !important;padding-left:80px !important}.v-content.globalnotification[data-v-0c9fc3c6],.v-main.globalnotification[data-v-0c9fc3c6]{padding-top:94px !important}.v-content.globalnotification .sidenav[data-v-0c9fc3c6],.v-main.globalnotification .sidenav[data-v-0c9fc3c6]{padding-top:102px}.v-content.pushright[data-v-0c9fc3c6]{padding-left:250px !important}.v-main.pushright[data-v-0c9fc3c6]{padding-left:250px !important}.v-main.pushright[data-v-0c9fc3c6] .v-list-item__action{margin-right:14px}.issue-tracker-banner[data-v-0c9fc3c6]{border:1px solid #e8e1e1;margin:1.5em 0;border-radius:10px;overflow:hidden}.issue-tracker-banner .issue-tracker-banner-content[data-v-0c9fc3c6]{display:flex;padding:.2em;align-items:center;background:#fcf3f2;text-transform:none;letter-spacing:.2px}.issue-tracker-banner .issue-tracker-banner-content .v-btn__content[data-v-0c9fc3c6]{font-size:.9em}.issue-tracker-banner .issue-tracker-banner-content .fa-circle-exclamation[data-v-0c9fc3c6]{color:#b13e44;padding:0 8px 0 12px;font-size:18px !important}.issue-tracker-banner .issue-tracker-banner-content .issue-count-number[data-v-0c9fc3c6]{font-weight:700}.issue-tracker-banner .issue-tracker-banner-content .fa-arrow-right[data-v-0c9fc3c6]{width:10px;opacity:.4;margin:0 8px}.pb-top-toolbar[data-v-0c9fc3c6]{display:flex;flex-direction:column}.pb-top-toolbar[data-v-0c9fc3c6] .v-toolbar__content{height:auto !important;display:flex;flex-direction:column;padding:0}.pb-top-toolbar .global-notification-banner[data-v-0c9fc3c6]{background-color:#5284e1;color:#fff;width:100%;height:34px;display:flex;justify-content:center;align-items:center;font-size:15px;font-weight:500}.pb-top-toolbar .global-notification-banner svg[data-v-0c9fc3c6]{margin-right:10px;color:#fff}.pb-top-toolbar .header-content[data-v-0c9fc3c6]{display:flex;width:100%;align-items:center;height:64px;padding:0 16px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.list-item-outer[data-v-b171bf14]{position:relative;width:100%}.change-badge-wrapper[data-v-b171bf14]{min-width:60px;display:flex;align-self:center;justify-content:flex-end}.change-badge-wrapper .change-badge[data-v-b171bf14]{justify-content:center;gap:1px;font-weight:600;font-size:15px;color:#595959;line-height:1;align-items:center}.change-badge-wrapper .change-badge svg[data-v-b171bf14]{color:#999;font-size:10px !important}.change-badge-wrapper .change-badge.positive[data-v-b171bf14]{color:var(--v-positiveAmount-base)}.change-badge-wrapper .change-badge.positive svg[data-v-b171bf14]{color:var(--v-positiveAmount-base)}.change-badge-wrapper .change-badge.negative[data-v-b171bf14]{color:var(--v-negativeAmount-base)}.change-badge-wrapper .change-badge.negative svg[data-v-b171bf14]{color:var(--v-negativeAmount-base)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.app-graph{display:flex;width:100%;overflow:hidden}.app-graph .connection-block-wrapper .line{background-color:#bebfc3 !important}.app-graph .arrow{width:0;height:0;border-top:8px solid rgba(0,0,0,0);border-bottom:8px solid rgba(0,0,0,0);border-left:10px solid var(--v-title-base);position:absolute;align-self:center;right:0}.app-graph .plug-overview{width:100%;display:flex;position:relative;align-self:center;align-items:center;justify-self:center}.app-graph .plug-overview .direction-chip{margin:auto 0 auto 20px !important}.app-graph .plug-overview .line{background:var(--v-title-base);position:absolute;width:100%;top:1px;bottom:0;height:1px;margin:auto}.app-graph .plug-overview .active-plugs{margin:auto;border:1px solid var(--v-title-base);background:#fafafa;z-index:1;min-width:170px;font-weight:500;font-size:12px;line-height:1.5;border-radius:8px;overflow:hidden;color:var(--v-title-base)}.app-graph .plug-overview .active-plugs .plug-item{align-items:center;border-top:rgba(0,0,0,0) !important;padding:3px 2px 3px 6px;display:flex}.app-graph .plug-overview .active-plugs .plug-item svg{font-size:14px !important;margin-bottom:2px;width:14px;height:14px}.app-graph .plug-overview .active-plugs .plug-item .inline-schedule{z-index:1;display:flex;padding:2px 6px 2px 4px;font-weight:600;font-size:12px;align-items:center;gap:4px;max-width:max-content;width:max-content !important;border-radius:7px;margin:3px 3px 3px 20px}.app-graph .plug-overview .active-plugs .plug-item .inline-schedule .run-before{display:none}.app-graph .plug-overview .active-plugs .plug-item .inline-schedule .run-after{display:none}.app-graph .plug-overview .active-plugs .plug-item .inline-schedule .fa-clock{font-size:12px !important;margin-bottom:0;width:12px;height:12px}.app-graph .plug-overview .active-plugs .plug-item:first-child{border-top:none}.app-graph .graph-block-wrapper.destination-systems .plug-overview.export .arrow{right:0;border-left:10px solid var(--v-flowExportBorder-base);border-right:0}.app-graph .graph-block-wrapper.destination-systems .plug-overview.export .line{background:var(--v-flowExportBorder-base)}.app-graph .graph-block-wrapper.destination-systems .plug-overview.export .active-plugs{border-color:var(--v-flowExportBorder-base);background:var(--v-flowExportBg-base);color:var(--v-flowExportText-base)}.app-graph .graph-block-wrapper.destination-systems .plug-overview.export .active-plugs .plug-item{border-color:rgba(0,0,0,0) !important}.app-graph .graph-block-wrapper.destination-systems .plug-overview.import .arrow{border-right:10px solid var(--v-flowImportBorder-base);left:0;border-left:0}.app-graph .graph-block-wrapper.destination-systems .plug-overview.import .line{background:var(--v-flowImportBorder-base)}.app-graph .graph-block-wrapper.destination-systems .plug-overview.import .active-plugs{border-color:var(--v-flowImportBorder-base);background:var(--v-flowImportBg-base);color:var(--v-flowImportText-base)}.app-graph .graph-block-wrapper.destination-systems .plug-overview.import .active-plugs .plug-item{border-color:rgba(0,0,0,0) !important}.app-graph .graph-block-wrapper.source-systems .plug-overview.import .line{background:var(--v-flowImportBorder-base)}.app-graph .graph-block-wrapper.source-systems .plug-overview.import .arrow{right:0;border-left:10px solid var(--v-flowImportBorder-base);border-right:0}.app-graph .graph-block-wrapper.source-systems .plug-overview.import .active-plugs{border-color:var(--v-flowImportBorder-base);background:var(--v-flowImportBg-base);color:var(--v-flowImportText-base)}.app-graph .graph-block-wrapper.source-systems .plug-overview.export .arrow{border-left:10px solid var(--v-flowExportBorder-base)}.app-graph .graph-block-wrapper.source-systems .plug-overview.export .line{background:var(--v-flowExportBorder-base)}.app-graph .graph-block-wrapper.source-systems .plug-overview.export .active-plugs{border-color:var(--v-flowExportBorder-base);background:var(--v-flowExportBg-base);color:var(--v-flowExportText-base)}.app-graph .graph-block-wrapper.source-systems .plug-overview.export .active-plugs .plug-item{border-color:rgba(0,0,0,0) !important}.app-graph .graph-block-wrapper{width:100%;display:flex;overflow:hidden}.app-graph .graph-block-wrapper .plug-overview-wrapper{width:100%;display:flex;flex-direction:column;gap:10px}.app-graph .graph-block-wrapper .plug-overview-endpoint{width:40px !important;position:relative;display:flex;flex-direction:column;align-self:center}.app-graph .graph-block-wrapper .plug-overview-endpoint .line{background:var(--v-flowImportBorder-base);height:1px;width:100%}.app-graph .graph-block-wrapper .plug-overview-endpoint .arrow{bottom:-8px;border-left:10px solid var(--v-flowImportBorder-base)}.app-graph .graph-block-wrapper .graph-blocks{width:100%;align-self:center;position:relative}.app-graph .graph-block-wrapper .graph-blocks .vertical-line{background:var(--v-flowImportBorder-base);position:absolute;height:100%;top:0;bottom:0;width:1px;margin:auto}.app-graph .graph-block-wrapper .graph-blocks .vertical-line.import{background-color:var(--v-flowImportBorder-base);right:0}.app-graph .graph-block-wrapper .graph-blocks .vertical-line.export{background-color:var(--v-flowExportBorder-base);left:0}.app-graph .graph-block-wrapper .graph-blocks .connection-block{position:relative;display:flex;padding:8px 0;align-items:center}.app-graph .graph-block-wrapper .line-hidden-top{position:absolute;height:100px;width:3px;left:-1px;background-color:var(--v-background-base);bottom:50%}.app-graph .graph-block-wrapper .line-hidden-top.right{right:-2px !important;left:auto;z-index:99}.app-graph .graph-block-wrapper .line-hidden-bottom{position:absolute;height:100px;width:3px;left:-1px;background-color:var(--v-background-base);top:calc(50% + 1px)}.app-graph .graph-block-wrapper .line-hidden-bottom.right{right:-2px !important;left:auto;z-index:99}.app-graph .graph-block-wrapper .line-overlay{display:none;height:50%;background:var(--v-background-base);width:3px;position:absolute;z-index:1}.app-graph .graph-block-wrapper .line-overlay.import{right:0;right:-1px}.app-graph .graph-block-wrapper .line-overlay.export{left:0;left:-1px}.app-graph .graph-block-wrapper .line-overlay.first{display:block;top:0}.app-graph .graph-block-wrapper .line-overlay.last{height:calc(50% - 1px);display:block;bottom:0}.app-graph .graph-block-wrapper .image-wrapper{height:auto;width:110px;min-width:110px;padding:0;display:flex;flex-direction:column;border:none !important}.app-graph .graph-block-wrapper .image-wrapper .image-wrapper-inner{border:1px solid var(--v-border-base);border-radius:20px;width:100%;height:100px;overflow:hidden;position:relative;display:flex;flex-direction:column;background:#fff}.app-graph .graph-block-wrapper .image-wrapper .connection-note{position:absolute;top:0;right:0;padding:6px}.app-graph .graph-block-wrapper .image-wrapper .connection-note svg{color:#8a8a94;font-size:16px}.app-graph .graph-block-wrapper .image-wrapper .v-image{max-width:70%;margin:auto;min-height:80px}.app-graph .graph-block-wrapper .connection-name{font-size:11px;right:0;margin:auto;line-height:1.3;text-align:center;border-top:1px solid var(--v-border-base);width:100%;padding:6px;font-weight:500;background:#fcfcfc}.app-graph .graph-block-wrapper .connection-name:hover{overflow:visible}.app-graph .pb-outer-wrapper{display:flex;flex-direction:column;align-self:center}.app-graph .pb-outer-wrapper .pb-wrapper-lg{border-radius:28px;border:1px solid #d3cdff;padding:5px;display:flex;height:120px;background:#fff}.app-graph .pb-outer-wrapper .pb-wrapper-lg .pb-wrapper-lg-inner{background:var(--v-primary-base);border-radius:24px;display:flex;padding:12px 10px;flex-direction:column}.app-graph .pb-outer-wrapper .pb-wrapper-lg .pb-wrapper-lg-inner img{max-width:90px;margin:auto}.app-graph .pb-outer-wrapper .pb-wrapper-lg .pb-wrapper-lg-inner .v-icon{color:var(--v-background-base);display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.overflow-btn-menu-multiple .v-select-list{padding:0;display:flex;flex-direction:column}.overflow-btn-menu-multiple .v-select-list .v-list-item--disabled{pointer-events:all !important;min-height:36px !important;cursor:help}.overflow-btn-menu-multiple .v-select-list .v-list-item--disabled .v-ripple__container{display:none}.overflow-btn-menu-multiple .v-select-list .disabled-header{background:var(--v-backgroundTableHeader-base);display:flex;flex-direction:row;width:100%;padding:6px 10px;border-top:1px solid var(--v-border-base);border-bottom:1px solid var(--v-border-base);gap:8px;align-items:center}.overflow-btn-menu-multiple .v-select-list .disabled-header svg{color:var(--v-title-base)}.overflow-btn-menu-multiple .v-select-list .disabled-header .text-wrapper{display:flex;flex-direction:column;gap:2px}.overflow-btn-menu-multiple .v-select-list .disabled-header .text-wrapper .title-label{font-size:13px;font-weight:500;line-height:1.2}.overflow-btn-menu-multiple .v-select-list .disabled-header .text-wrapper .byline-label{font-size:12px;font-weight:400;line-height:1.2;color:var(--v-byline-base)}.overflow-btn-menu-multiple .v-input--selection-controls__input{margin-right:3px !important}.overflow-btn-menu-multiple .v-list-item{padding:0;border-bottom:1px solid var(--v-border-lighten1);min-height:auto !important;pointer-events:none}.overflow-btn-menu-multiple .v-list-item .v-btn--disabled{background-color:rgba(0,0,0,0) !important}.overflow-btn-menu-multiple .v-list-item--highlighted{color:#000 !important}.overflow-btn-menu-multiple .v-list-item--highlighted .v-simple-checkbox:not(.active){opacity:.7}.overflow-btn-menu-multiple .overflow-btn-menu-row{display:flex;gap:4px;align-items:center;width:100%;color:#000 !important;opacity:.9;padding:2px 0;font-size:14px;font-weight:500;min-height:30px}.overflow-btn-menu-multiple .overflow-btn-menu-row .v-icon.disabled-icon{color:var(--v-title-base) !important;font-size:20px;margin:0 8px 0 4px}.overflow-btn-menu-multiple .overflow-btn-menu-row .title-label{color:var(--v-title-base)}.overflow-btn-menu-multiple .overflow-btn-menu-row .disabled-label{color:var(--v-byline-base);font-size:12px;font-weight:400 !important}.overflow-btn-menu-multiple .overflow-btn-menu-row .text-wrapper{display:flex;flex-direction:row;gap:1px;text-align:left;width:100%;align-items:center}.overflow-btn-menu-multiple .overflow-btn-menu-row .text-wrapper-disabled{padding:0 10px}.overflow-btn-menu-multiple .overflow-btn-menu-row .v-simple-checkbox.active i{color:var(--v-primary-base) !important}.overflow-btn-menu-multiple .overflow-btn-menu-row .v-simple-checkbox:not(.active){color:#000 !important}.overflow-btn-menu-multiple .v-btn{pointer-events:all}.overflow-btn-menu-multiple .v-simple-checkbox{pointer-events:none}.overflow-btn-menu-multiple .v-list-item--active::before{opacity:0 !important}.assistant-system-select-wrapper{display:flex;align-items:center;gap:10px;width:100%}.assistant-system-select-wrapper .extra-settings{border:1px solid var(--v-border-base);background:var(--v-background-base);padding:10px;font-size:14px;margin-top:-7px;display:flex;flex-direction:column;gap:8px;border-bottom-left-radius:5px;border-bottom-right-radius:5px;z-index:1;margin-bottom:4px}.assistant-system-select-wrapper .label{min-width:120px}.btn-switch.v-btn{background:var(--v-backgroundLight-base);width:70px;padding:10px;box-shadow:none;border-radius:8px;letter-spacing:.3px;text-transform:none;height:28px !important;color:#676767;font-size:13px;font-weight:500}.btn-switch.v-btn.active{border-width:0;background-color:var(--v-primary-base);color:#fff}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.perm-btn[data-v-7470101e]{color:var(--v-byline-base);text-transform:none !important;padding:4px 10px !important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.header-content[data-v-01412f4c]{display:flex;align-items:center !important;width:100%}.base-dialog-text[data-v-01412f4c]{line-height:1.1;align-self:center;width:fit-content}.base-dialog-text .header[data-v-01412f4c]{display:block;line-height:1.1;padding-right:12px}.base-dialog-text .header .pb-text-field[data-v-01412f4c]{min-width:min-content}.base-dialog-text .header .v-input__slot[data-v-01412f4c]{padding:0}.base-dialog-text .header fieldset[data-v-01412f4c]{border:1px solid #f5f5f9 !important}.base-dialog-text .header .v-text-field__slot[data-v-01412f4c]{font-size:17px}.base-dialog-text .byline[data-v-01412f4c]{font-size:15px;font-weight:400;opacity:.67;overflow-wrap:anywhere}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.data-view-dialog{display:flex}.data-view-dialog .dialog-content{display:flex;overflow:hidden auto !important;flex-direction:column}.data-view-dialog .v-card.v-sheet{overflow-y:auto}.data-view-dialog .v-expansion-panel-content__wrap{padding:0 !important}.data-view-dialog .row{overflow:auto}.data-view-sidebar{width:270px;min-width:270px;position:sticky;top:0;height:100%;padding:0;overflow-y:auto;border-right:1px solid var(--v-border-base);background:#fff}.data-view-sidebar .list-header{background:var(--v-background-base);min-height:30px !important;padding-left:12px;border-bottom:1px solid var(--v-border-base)}.data-view-sidebar .list-header .v-list-item__title{text-transform:uppercase;font-weight:600 !important;color:gray;font-size:12px}.data-view-sidebar .sidebar-nav-header{padding:5px 12px;background:#e9eff3;border-bottom:1px solid var(--v-border-base);font-weight:500;color:#666}.data-view-sidebar .sidebar-nav-card{border-bottom:1px solid var(--v-border-base);width:100%;background:#fff;padding:4px 12px;font-weight:500}.data-view-sidebar .sidebar-nav-card .label{display:block;width:100%;font-size:15px !important;color:#000;font-weight:500;text-align:left;padding:0 0 4px}.data-view-sidebar .sidebar-nav-card .sku{display:block;width:100%;font-size:14px;font-weight:400;color:#666}.data-view-sidebar .sidebar-nav-card.active{background:#eee6ff;color:#1e1337;border-bottom:1px solid #aa8fe5;border-top:1px solid #aa8fe5}.data-view{width:100%}.data-view .v-expansion-panel{border-left:0;border-right:0}.data-view .v-expansion-panel-header{padding:12px 16px !important}.data-view .header{width:100%;background:gray;padding:8px 16px;border-bottom:1px solid var(--v-border-base);border-top:1px solid var(--v-border-base);text-transform:uppercase;font-weight:600;color:gray;font-size:12px}.data-view .data-view-card pre{background:#313853;color:#78e39e;border-radius:0}.data-view .data-view-card .v-card__text{padding:0}.data-view .data-view-card .v-card__text .orderrows-panel .v-expansion-panel-header__icon{margin-left:auto}.data-view .v-card__text.dialog-content>.row{padding-left:0}.expandable-header{font-size:16px;font-weight:500;padding:0 20;background:gray;color:#000;border-bottom:1px solid var(--v-border-base)}.enable-popups-dialog{background:#fff}.enable-popups-dialog img{width:100%}.enable-popups-dialog .how-to-list h4{color:#000;font-size:16px;font-weight:600;margin-bottom:10}.enable-popups-dialog .how-to-list ol{padding-left:16px}.enable-popups-dialog .how-to-list ol li{line-height:1.3;margin-bottom:10;color:gray;font-size:14px}.syntax-highlighting{color:#919bc2;background:#313853;border-radius:0;padding:12px;margin:0;max-height:60vh;overflow:auto}.syntax-highlighting .string{color:#78e39e}.syntax-highlighting .number{color:#78e39e}.syntax-highlighting .boolean{color:#78e39e}.syntax-highlighting .null{color:#fff}.syntax-highlighting .key{color:#ff6b72}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.draggable-dialog .v-card__title .draggable-indicator{position:absolute;left:0;top:0;right:0;bottom:0;height:100%;opacity:0;display:flex;transition:.4s}.draggable-dialog .v-card__title .draggable-indicator .wrapper{width:32px;height:32px;display:flex;background-color:#fff;border:1px solid var(--v-border-lighten1);border-radius:19px;align-items:center;justify-content:center;margin:auto}.draggable-dialog .v-card__title .draggable-indicator .wrapper svg{color:var(--v-grey);font-size:16px}.draggable-dialog .v-card__title:hover .draggable-indicator{opacity:1}.grabber{flex-grow:1;align-items:center;justify-content:center;display:flex;transition:opacity .5s linear;opacity:0;background:var(--v-background-base);position:absolute;width:100%;margin:auto;left:0;right:0;bottom:0;top:0;cursor:grab}.grabber .grabber-inner{width:100%;height:100%}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.v-form[data-v-1e03431f]{display:flex;flex-direction:column;gap:10px;width:100%}.custom-data-card[data-v-1e03431f]{border:1px solid var(--v-border-base) !important;width:100%;max-width:800px}.custom-data-card .card-header[data-v-1e03431f]{display:flex;padding:4px 16px;border-bottom:1px solid var(--v-border-base);align-items:center}.custom-data-card .card-header .v-btn[data-v-1e03431f]{padding:0;font-weight:600;letter-spacing:0}.custom-data-card .card-header .title-label[data-v-1e03431f]{font-weight:500}.custom-data-card .card-content[data-v-1e03431f]{padding:10px}.custom-data-card .card-content .no-data[data-v-1e03431f]{text-align:center;font-size:15px;color:1px solid var(--v-byline-base)}.custom-data-card .card-content .custom-data-row[data-v-1e03431f]{display:flex;align-items:center;border:1px solid var(--v-border-base)}.custom-data-card .card-content .custom-data-row table[data-v-1e03431f]{border-collapse:collapse}.custom-data-card .card-content .custom-data-row table th[data-v-1e03431f]{font-weight:500;background-color:var(--v-backgroundLight-base);border-bottom:1px solid var(--v-border-base);font-size:12px}.custom-data-card .card-content .custom-data-row table th[data-v-1e03431f],.custom-data-card .card-content .custom-data-row table td[data-v-1e03431f]{padding:2px 5px}.custom-data-card .card-content .action-buttons[data-v-1e03431f]{margin-left:10px;display:flex;gap:4px}.custom-data-card .card-content .action-buttons .v-btn[data-v-1e03431f]{min-width:auto;height:auto;padding:5px;border-radius:8px;box-shadow:none;background:rgba(0,0,0,0)}.custom-data-card .card-content .action-buttons .v-btn svg[data-v-1e03431f]{opacity:.5}.table-header[data-v-1e03431f]{text-align:start;width:200px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.date-search-buttons[data-v-0857f2e2]{display:flex;margin-top:24px;padding:24px 12px 0 0}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.chart-stats-card[data-v-5b03f2d7]{display:inline-flex;align-items:center;gap:8px;margin-right:12px}.direction-indicator[data-v-5b03f2d7]{width:10px;height:10px;border-radius:50%;display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.chart-container[data-v-76ccc058]{transform:scale(0.9)}.tenant-card-wrapper[data-v-76ccc058]{display:flex;background:var(--v-background-base);border:1px solid var(--v-border-base);border-radius:16px;padding:1em 1.5em 1em 2em;gap:3em}.tenant-card-wrapper .text-wrapper[data-v-76ccc058]{display:flex;flex-direction:column;gap:1em;padding-top:1em}.tenant-card-wrapper .text-wrapper .label[data-v-76ccc058]{font-size:16px;font-weight:400;letter-spacing:.2px;display:flex;opacity:.9}.tenant-card-wrapper .text-wrapper .count-badge[data-v-76ccc058]{font-size:32px;font-weight:600;display:flex;align-items:end;line-height:1;gap:8px}.tenant-card-wrapper .text-wrapper .amount[data-v-76ccc058]{font-size:2.4em;font-weight:600;display:flex;align-items:end;line-height:1;gap:8px}.tenant-card-wrapper .text-wrapper .amount .amount-wrapper[data-v-76ccc058]{display:flex;gap:2px;align-items:center}.tenant-card-wrapper .text-wrapper .amount .amount-wrapper .change-symbol[data-v-76ccc058]{font-size:22px}.tenant-card-wrapper .text-wrapper .amount .change-percentage[data-v-76ccc058]{display:flex;font-size:15px;padding-bottom:2px;align-items:flex-end}.tenant-card-wrapper .text-wrapper .amount .change-percentage svg[data-v-76ccc058]{margin-right:3px;font-size:14px !important}.tenant-card-wrapper .text-wrapper .amount .direction-badge[data-v-76ccc058]{font-size:12px;font-weight:400;margin-bottom:3px;display:flex;flex-direction:column;gap:4px}.tenant-card-wrapper .text-wrapper .amount .direction-badge .direction-text[data-v-76ccc058]{opacity:.7}.tenant-card-wrapper .text-wrapper .amount .direction-badge .change-amount[data-v-76ccc058]{font-size:25px;font-weight:500;display:flex;gap:6px;align-items:end}.tenant-card-wrapper .text-wrapper .amount .direction-badge .change-amount.positive[data-v-76ccc058]{color:var(--v-positiveAmount-base)}.tenant-card-wrapper .text-wrapper .amount .direction-badge .change-amount.positive svg[data-v-76ccc058]{color:var(--v-positiveAmount-base)}.tenant-card-wrapper .text-wrapper .amount .direction-badge .change-amount.negative[data-v-76ccc058]{color:var(--v-negativeAmount-base)}.tenant-card-wrapper .text-wrapper .amount .direction-badge .change-amount.negative svg[data-v-76ccc058]{color:var(--v-negativeAmount-base)}.chart-stats-card[data-v-76ccc058]{display:inline-flex;align-items:center;gap:8px;margin-right:12px}.direction-indicator[data-v-76ccc058]{width:10px;height:10px;border-radius:50%;display:none}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.json-node[data-v-66d99210]{line-height:1.5;white-space:nowrap;position:relative}.json-node[data-v-66d99210]:not(.no-actions){padding-left:1.5em}.action-btn[data-v-66d99210]{background:#444;color:#fff;border:none;border-radius:3px;padding:2px 6px;margin-left:5px;cursor:pointer;font-size:.8em;line-height:1;transition:background-color .2s;user-select:none}.action-btn[data-v-66d99210]:hover{background:#666}.json-key[data-v-66d99210]{color:#c90;cursor:default}.json-punctuation[data-v-66d99210]{color:#aaa;user-select:none}.json-value[data-v-66d99210]{padding:0 4px}.json-type-string[data-v-66d99210]{color:#0b3}.json-type-number[data-v-66d99210]{color:#25a}.json-type-boolean[data-v-66d99210]{color:#d19}.json-type-null[data-v-66d99210]{color:#f70}.start-bracket[data-v-66d99210]{cursor:pointer}.node-length-hint[data-v-66d99210]{font-size:.8em;color:#888;padding-left:5px;user-select:none}.folded-hint[data-v-66d99210]{cursor:pointer;font-style:italic}.ellipsis[data-v-66d99210]{font-size:1.5em;line-height:.5;vertical-align:sub}.validation-error[data-v-66d99210]{display:inline-flex;align-items:center;margin-left:15px;padding:3px 8px;background-color:#501d1d;color:#ff5252;border:1px solid #ff5252;border-radius:4px;font-size:.8em;font-family:sans-serif}.validation-error .v-icon[data-v-66d99210]{margin-right:5px}.json-value[contenteditable=true][data-v-66d99210]{outline:2px solid #ff5252}.node-actions[data-v-66d99210]{position:relative;display:inline-block;margin-right:-7px}.copy-btn[data-v-66d99210]{background:#3a5c9a;padding:2px 5px;margin-left:5px;opacity:0;line-height:1.2;position:absolute;left:-33px;top:-15px}.copy-btn.primitive[data-v-66d99210]{top:-15px !important}.json-node:hover>.node-actions>.copy-btn[data-v-66d99210]{opacity:1}.dense-list .v-list-item[data-v-66d99210]{min-height:25px !important}.dense-list .v-list-item[data-v-66d99210]:not(:last-child){border-bottom:1px solid var(--v-border-base)}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.json-viewer-wrapper[data-v-604f19d2]{font-family:monospace;background-color:#2a2a2a;color:#fff;padding:15px;border-radius:8px;min-width:300px;overflow:auto}.viewer-hint[data-v-604f19d2]{font-size:.9em;color:#999;margin-bottom:10px}.action-symbol[data-v-604f19d2]{font-weight:bold;color:#fff;background-color:#555;padding:0 4px;border-radius:3px;margin:0 2px}.parse-error[data-v-604f19d2]{background-color:#c33;padding:10px;border-radius:4px;color:#fff}.json-tree-root[data-v-604f19d2]{padding-left:0}.json-text-area[data-v-604f19d2]{height:100%}.json-text-area[data-v-604f19d2] .v-input__control{height:100%}.json-text-area[data-v-604f19d2] .v-input__control .v-text-field__details{position:absolute;bottom:10px}.json-text-area[data-v-604f19d2] .v-input__control .v-input__slot{height:100%}.json-text-area[data-v-604f19d2] .v-input__control .v-input__slot .v-text-field__slot{height:100%}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.permission-list{border:1px solid var(--v-border-base);background:var(--v-dialogBg-base);border-radius:6px}.permission-list .perm-btn{color:var(--v-byline-base);text-transform:none !important;padding:4px 10px !important}.permission-list .v-input--switch__track{opacity:.3 !important}.permission-list .super-user-wrapper{display:flex;padding:14px 16px}.permission-list .super-user-wrapper svg{color:var(--v-title-base);font-size:16px}.permission-list .super-user-wrapper .title-label{display:block;color:var(--v-title-base);font-weight:500;font-size:15px}.permission-list .super-user-wrapper .byline-label{max-width:340px;display:block;margin-top:5px;line-height:1.4}.permission-list .permission-list-header{background-color:var(--v-backgroundTableHeader-base);border-top:1px solid var(--v-border-base);border-bottom:1px solid var(--v-border-base);font-weight:500;line-height:1.4;padding:6px 16px;font-size:13px;display:block}.permission-list .permission-list-header.top-header{display:flex;padding:10px 16px;font-size:14px;align-items:center;font-weight:600}.permission-list .permission-tile{font-weight:400;font-size:15px;display:flex;align-items:center;padding:8px 16px;color:var(--v-title-base);gap:8px}.permission-list .permission-tile .permission-title{min-width:170px;color:var(--v-byline-base);font-weight:500;text-transform:capitalize;font-size:14px}.permission-list .permission-tile .groupheader{margin-top:0}.permission-list .permission-tile .v-input__slot{margin-bottom:0}.permission-list .permission-tile .v-input__slot label{font-weight:500;font-size:15px}.permission-list .permission-tile .v-btn{height:auto !important;border-radius:6px;letter-spacing:.5px;font-size:13px;padding:5px 10px;font-weight:600 !important;color:var(--v-byline-base);text-transform:capitalize}.permission-list .permission-tile .v-input{margin:0 !important;padding:0 !important}.permission-list .permission-tile .v-btn.active{background-color:var(--v-primary-base) !important;color:#fff !important}.permission-list .permission-tile:not(:last-child){border-bottom:1px solid var(--v-border-base) !important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.edit-reseller{background-color:var(--v-dialogBg-base) !important}.reselleruser-localid{width:100%;color:#ccc;text-align:center;font-weight:400;font-size:10px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.assistant-details-wrapper .v-input:not(.disabled) .v-input__slot{background-color:var(--v-background-base) !important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.save-as-template-banner[data-v-1b1a6919]{padding:12px 16px;border:1px solid var(--v-border-base);display:flex;flex-direction:column;margin:0 20px 12px;border-radius:16px !important;background-color:var(--v-backgroundTableHeader-base)}.save-as-template-banner .text-hint[data-v-1b1a6919]{font-size:12px;color:var(--v-error-base) !important;padding-left:3px}.save-as-template-banner .v-input--selection-controls__input[data-v-1b1a6919]{margin:0 !important}.save-as-template-banner .v-input--selection-controls__input svg[data-v-1b1a6919]{height:18px !important;width:18px !important}.save-as-template-banner .title-text[data-v-1b1a6919]{font-weight:500;font-size:16px}.save-as-template-banner .title-text svg[data-v-1b1a6919]{font-size:15px;margin-right:3px}.save-as-template-banner .byline-text[data-v-1b1a6919]{font-weight:400;font-size:13px;color:var(--v-byline-base)}.save-as-template-banner.is-active[data-v-1b1a6919]{background-color:var(--v-backgroud-base)}.active[data-v-1b1a6919]{background-color:var(--v-border-base) !important;color:#fff !important}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.btn-switch{background:var(--v-backgroundLight-base);padding:2px;border-radius:10px;border:1px solid var(--v-border-base)}.btn-switch .v-btn{width:90px;padding:4px;box-shadow:none;border-radius:8px;letter-spacing:.3px;text-transform:none;height:28px !important;background:rgba(0,0,0,0) !important;color:var(--v-byline-base)}.btn-switch .v-btn.active{color:#09acba;background:var(--v-background-base) !important;border:1px solid var(--v-border-base)}.btn-switch .v-btn.inactive{color:#f31b5d;background:var(--v-background-base) !important;border:1px solid var(--v-border-base)}.select-source{border:1px solid var(--v-border-base);padding:8px;border-radius:6px;display:flex;flex-direction:column;gap:6px}.select-source .label{font-weight:500;margin-bottom:10px;display:none}.select-source .separator{padding:0 12px;align-items:center;display:flex;font-weight:600;font-size:12px;color:#555;text-transform:uppercase;height:40px}.select-source .v-select__selections{margin-top:5px !important;margin-bottom:5px !important}.select-source .pb-select{width:100%}.select-source .v-input__slot{margin-bottom:0 !important;border:none}.select-source .select-source-card-items{display:flex;flex-direction:row;width:100%}.select-source .select-source-card-item{display:flex;width:100%;padding:6px 6px 3px;border-radius:6px;border:1px solid var(--v-flowImportBorder-base);background-color:var(--v-flowImportBg-base);align-items:flex-start}.select-source .select-source-card-item .record-select{width:190px !important;min-width:190px !important}.select-source .select-source-card-item .type-field{padding:0 12px;background:var(--v-background-base);border-radius:4px;border:1px solid var(--v-border-base);height:40px;display:flex;align-items:center;font-weight:500;font-size:14px;width:190px !important;min-width:190px !important}.select-source .select-source-card-item .separator{color:var(--v-flowImportText-base)}.select-source .select-source-card-item .v-select__slot{font-weight:500;font-size:14px}.select-source .select-source-card-item.export-item{border-color:var(--v-flowExportBorder-base);background-color:var(--v-flowExportBg-base)}.select-source .select-source-card-item.export-item .separator{color:var(--v-flowExportText-base)}.select-source .select-source-card-system{width:100%;display:flex}.select-source .select-source-card-system .v-input{width:100%}.settings-wrapper{background:var(--v-background-base);border:1px solid var(--v-border-base);border-radius:10px}.settings-wrapper .settings-wrapper-header{border-bottom:1px solid var(--v-border-base);align-items:center;padding:3px 20px;font-weight:500;display:flex;width:100%;height:44px}.settings-wrapper .settings-inner-wrapper{padding:20px 24px 0}.settings-wrapper .settings-inner-wrapper .setting-column{display:flex;flex-direction:column;gap:10px}.settings-wrapper h2{font-size:16px;font-weight:500}.settings-wrapper .assistant-cards{background:var(--v-background-base);display:flex;gap:16px}.settings-wrapper .assistant-cards .assistant-card{padding:10px;border-radius:10px}.settings-wrapper .assistant-cards .assistant-card .label{font-weight:500;display:block}.settings-wrapper .assistant-cards .assistant-card .desc{font-size:14px;line-height:1.3;display:block;color:var(--v-byline-base)}.settings-wrapper .assistant-cards .assistant-card.active{border:1px solid var(--v-primary-base) !important}.tenant-setting{display:flex;flex-direction:column;gap:4px}@media(width >= 960px){.tenant-setting{flex-direction:row;gap:10px}}.tenant-setting .pb-select{min-width:240px}.tenant-setting .v-input{font-size:15px}.tenant-setting .details{min-width:160px}.tenant-setting .details .title-label{font-weight:500;display:block;font-size:14px}.tenant-setting .details .byline-label{color:var(--v-byline-base);font-size:11px;line-height:1.3;font-weight:400}.tenant-setting-group{display:flex;position:relative;flex-direction:column;border:1px solid var(--v-border-base);border-radius:6px;padding:26px 16px 6px;gap:8px}.tenant-setting-group .group-label{background:var(--v-background-base);position:absolute;left:8px;top:-10px;font-size:13px;font-weight:400;padding:0 8px;color:var(--v-title-base)}.tenant-setting-group .v-input{font-size:14px !important}.tenant-setting-group .nested-input-wrapper{flex-direction:column;display:flex;align-items:flex-end}.tenant-setting-group .nested-input-wrapper .v-btn{text-transform:none;letter-spacing:0;font-weight:600}.tenant-setting-group .nested-input-wrapper .v-btn svg{width:12px;margin-left:8px}.tenant-setting-group .nested-input-wrapper .nested-input{display:flex;align-items:center;gap:12px}.tenant-setting-group .nested-input-wrapper .nested-input .nested-input-label{font-size:14px}.tenant-setting-group .details{min-width:140px;display:flex;align-items:center;align-self:flex-start}.tenant-setting-group .details .title-label{font-weight:500;display:block;font-size:14px}.assistants-wrapper .no-assistants{height:60px;text-align:center;display:flex;align-items:center;justify-content:center;color:var(--v-byline-base)}.assistants-wrapper .assistant-card{border-radius:4px;background:var(--v-dialogBgInner-base)}.assistants-wrapper .assistant-card .assistant-col-card-items{padding:8px;display:flex;flex-direction:column;gap:4px}.assistants-wrapper .assistant-card .assistant-col-card{border:1px solid var(--v-border-base);border-radius:8px}.assistants-wrapper .assistant-card .assistant-col-card .header-label{border-bottom:1px solid var(--v-border-base);font-weight:500;font-size:14px;display:block;padding:3px 8px}.assistants-wrapper .assistant-card .assistant-col-card .assistant-col-card-item{display:flex;align-items:center;gap:10px}.assistants-wrapper .assistant-card .assistant-col-card .assistant-col-card-item .label{font-weight:500;min-width:160px}.assistants-wrapper .assistant-card .assistant-card-header{border-bottom:1px solid var(--v-border-base);display:flex;align-items:center;padding:2px 10px 2px 16px}.assistants-wrapper .assistant-card .assistant-card-header .assistant-card-header-title{font-weight:500;font-size:14px}.edit-selection{padding:24px 30px}.edit-selection h2{font-weight:600;font-size:18px;margin-bottom:20px}.edit-selection .template-card{border:1px solid var(--v-border-base);border-radius:10px;padding:20px 16px;background:var(--v-background-base);cursor:pointer;min-height:80px;display:flex;align-items:center;width:19%;text-align:center;font-size:15px;font-weight:500;flex-direction:column;gap:14px;justify-content:start}.edit-selection .template-card .d-flex{flex-direction:row-reverse}.edit-selection .template-card .title-label{display:block;line-height:1.3;font-size:14px}.edit-selection .template-card .system-logo{border-radius:40px;border:1px solid var(--v-border-base);padding:2px;height:32px;width:32px}.edit-selection .template-card .system-logo .v-image{border-radius:40px}.edit-selection .template-card .system-logo-count{border-radius:40px;border:1px solid var(--v-border-base);font-weight:600;font-size:11px;display:flex;align-items:center;height:32px;width:32px;justify-content:center}.edit-selection .template-card svg{font-size:22px;color:var(--v-primary-base)}.edit-selection .template-card.create-new{font-size:14px;gap:12px;justify-content:center}.edit-selection .text-separator{margin:30px 0;font-weight:500;font-size:15px;display:block;position:relative}.edit-selection .text-separator .line{width:100%;height:1px;background:var(--v-border-base);left:0;position:absolute;top:0;bottom:0;display:flex;align-self:center}.edit-selection .text-separator .or-text{background:var(--v-dialogBgInner-base);font-size:12px;color:var(--v-byline-base);text-transform:uppercase;max-width:max-content;margin:auto;z-index:99;position:sticky;padding:0 10px}.edit-selection .selection-card{border:1px solid var(--v-border-base);border-radius:10px;padding:16px 24px;background:var(--v-background-base);cursor:pointer;min-height:80px;display:flex;width:50%;align-items:center;gap:20px}.edit-selection .selection-card svg{color:var(--v-primary-base);font-size:22px}.edit-selection .selection-card .text-wrapper{display:flex;flex-direction:column;text-align:left;gap:2px}.edit-selection .selection-card .title-label{display:block;font-weight:500;font-size:15px}.edit-selection .selection-card .byline-label{color:var(--v-byline-base);font-size:14px;display:block;line-height:1.4}.assistant-select-list .v-list-item__title .label{display:block;font-size:15px;font-weight:500}.assistant-select-list .v-list-item__title .desc{display:block;font-size:14px}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/noSourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_NO_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.v-card__actions.login{padding:unset}#login{padding-top:1%}.login-page .logo-wrapper{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.login-page .logo-wrapper .logo{max-height:40px;margin:55px auto 5px;display:block}.login-page .logo-wrapper .logo .v-responsive__content{width:230px}.login-page .logo-wrapper .environment-wrapper{margin:auto}.login-page .logo-wrapper .environment-wrapper .environment-badge{color:var(--v-badgeRedText-base);padding:4px 14px;border-radius:6px;display:block;max-width:max-content;letter-spacing:.5px;font-weight:500;margin:auto;background:var(--v-badgeRedBg-base);font-size:12px}.login-page .logo-wrapper .environment-wrapper .test-info-wrapper{border:1px solid var(--v-border-base);font-size:13px;padding:4px;border-radius:6px;background:var(--v-background-base);max-width:max-content;margin:auto}.login-page .logo-wrapper .environment-wrapper .test-info-wrapper tr td{padding:0 4px;color:var(--v-title-base)}.login-page .logo-wrapper .environment-wrapper .test-info-wrapper tr td:first-child{color:var(--v-title-base);min-width:80px}.login-page .v-content{padding:0 120px !important}.login-page .v-main{padding:0 120px !important}.login-page .alert-discreet{margin-bottom:50px;margin-top:50px}.login-page .login-card{border-radius:12px !important;padding:26px;max-width:390px;margin:8% auto 0;border:1px solid var(--v-border-base)}.login-page .login-card h2{color:var(--v-title-base);margin-bottom:24px;font-weight:500}.login-page .login-card .v-stepper{overflow:hidden}.login-page .login-card .v-stepper .v-stepper__items{padding-top:10px}.login-page .login-card .v-stepper .v-stepper__content{padding:0;overflow:visible}.login-page .login-card .v-stepper .v-stepper__wrapper{overflow:visible}.login-page .login-card .button-wrapper{display:flex;margin-top:16px}.login-page .v-input--is-disabled fieldset{background:var(--v-backgroundLight-base)}.login-page .v-input--is-disabled input{color:var(--v-byline-base)}.login-page .btn-login{background-color:var(--v-primary-base) !important;color:#fff !important;padding:10px 24px !important;height:auto !important;width:100%}.login-page .login{width:100%}.login-page .login .btn-back{width:50% !important}.login-page .login .btn-login{width:50% !important}.login-page .btn-login.v-btn--disabled.disabled-color{background-color:var(--v-primary-base) !important}.login-page .btn-login.v-btn--disabled.disabled-color .v-progress-circular__overlay{color:var(--v-title-base)}.login-page .btn-back{background-color:var(--v-backgroundLight-base) !important;color:var(--v-byline-base) !important;padding:10px 24px !important;height:auto !important}.login-page .login-field .v-input__slot{margin:0}.login-page .login-field .theme--light.v-icon{color:var(--v-title-base);font-size:22px !important}@keyframes autofill{to{color:var(--v-byline-base);background:rgba(0,0,0,0)}}.login-page input:-webkit-autofill{animation-name:autofill;animation-fill-mode:both}`, \"\"]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!./global.scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"31f86690\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionDialog.vue?vue&type=style&index=0&id=2b09f4be&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"2257cc80\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=1b059a6a&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"74a49d4e\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyToClipboardButton.vue?vue&type=style&index=0&id=5b102c5a&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"71f05232\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Error.vue?vue&type=style&index=0&id=041a41b3&prod&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"3b0f9259\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoggedInContent.vue?vue&type=style&index=0&id=0c9fc3c6&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"76b630be\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatsItemCard.vue?vue&type=style&index=0&id=b171bf14&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"474c35f4\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppGraph.vue?vue&type=style&index=0&id=39521929&prod&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"36b881c0\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssistantSystemSelectWrapper.vue?vue&type=style&index=0&id=5851b73e&prod&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"bf1415d2\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxList.vue?vue&type=style&index=0&id=7470101e&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"e33a1aaa\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseDialog.vue?vue&type=style&index=0&id=01412f4c&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"e5e6a1b6\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataViewDialog.vue?vue&type=style&index=0&id=01f4d304&prod&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4b983dab\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DraggableDialog.vue?vue&type=style&index=0&id=80a92554&prod&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"ad65f19e\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditCustomData.vue?vue&type=style&index=0&id=1e03431f&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"a43334c6\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DateSearch.vue?vue&type=style&index=0&id=0857f2e2&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"262bc982\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GraphCard.vue?vue&type=style&index=0&id=5b03f2d7&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"72307ae2\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TenantCard.vue?vue&type=style&index=0&id=76ccc058&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"684a679c\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JsonNode.vue?vue&type=style&index=0&id=66d99210&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"031dc620\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JsonViewer.vue?vue&type=style&index=0&id=604f19d2&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"54bc6f4b\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserPermsAndAntiList.vue?vue&type=style&index=0&id=5ae65962&prod&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"861d89fa\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReselleruserEditDialog.vue?vue&type=style&index=0&id=031de314&prod&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5c45077a\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SalesFlow.vue?vue&type=style&index=0&id=0d0a8062&prod&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"da95037e\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TenantCreateConfirmDialog.vue?vue&type=style&index=0&id=1b1a6919&prod&scoped=true&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"81d7ba82\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TenantEditDialog.vue?vue&type=style&index=0&id=79371d96&prod&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5c9414d8\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[2]!../../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-3.use[3]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=0bcb42bc&prod&lang=scss\");\nif(content.__esModule) content = content.default;\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"33746682\", content, true, {});","import Vue from \"vue\"\nimport Vuetify from \"vuetify/lib\"\n\nimport { UserVuetifyPreset } from \"vuetify/types\"\n\n// @ts-ignore - is aliased in webpack.config.js\nimport { FontAwesomeIcon } from \"fontawesome\"\n\nVue.use(Vuetify)\n\nVue.component(\"FontAwesomeIcon\", FontAwesomeIcon)\n\nconst customIcons = {\n  \"sort-up\": \"far fa-arrow-up\",\n  \"sort\": \"far fa-arrow-up\",\n}\n\nconst opts: Partial<UserVuetifyPreset> = {\n  icons: {\n    iconfont: \"faSvg\",\n    values: {\n      ...customIcons,\n    },\n  },\n  theme: {\n    options: { customProperties: true },\n    dark: false,\n    themes: {\n      light: {\n        primary: \"#7d6eed\",\n        secondary: \"#8a7ee3\",\n        accent: \"#579bfb\",\n        warning: \"#f85f63\",\n        black: \"#212636\",\n        grey: \"#757575\",\n        progress: \"#23b5d3\",\n        success: \"#10ac84\",\n        error: \"#ee5253\",\n        activated: \"#10ac84\",\n        disabled: \"#e2e2e2\",\n        badgeRedBg: \"#f7e0e6\",\n        badgeRedText: \"#95002a\",\n        badgeGreenBg: \"#dcf1f4\",\n        badgeGreenText: \"#034e59\",\n        border: \"#dedede\",\n        borderLight: \"#f2f2f2\",\n        title: \"#141415\",\n        byline: \"#676767\",\n        background: \"#ffffff\",\n        backgroundLight: \"#f9f9fb\",\n        backgroundDark: \"#eeeeee\",\n        backgroundTableHeader: \"#fafafa\",\n        dialogBg: \"#ffffff\",\n        dialogBgInner: \"#f9f9fb\",\n        inputBg: \"#ffffff\",\n        ctaInverted: \"#ffffff\",\n        ctaLight: \"#ffffff\",\n        flowImportBg: \"#f3f2fb\",\n        flowImportBorder: \"#a7a0e9\",\n        flowImportText: \"#241d6c\",\n        flowExportBg: \"#e6f6f7\",\n        flowExportBorder: \"#5bb9c1\",\n        flowExportText: \"#113b3f\",\n        globalNotification: \"#245cc9\",\n        globalNotificationBg: \"#e7efff\",\n        navPrimary: \"#7d6eed\",\n        navBg: \"#f9f8ff\",\n        logoTitle: \"#7d6eed\",\n        positiveAmount: \"#3bb37a\",\n        negativeAmount: \"#ee6e6c\",\n      },\n      dark: {\n        primary: \"#968eff\",\n        secondary: \"#8a7ee3\",\n        accent: \"#579bfb\",\n        warning: \"#f85f63\",\n        black: \"#212636\",\n        grey: \"#757575\",\n        progress: \"#23b5d3\",\n        success: \"#10ac84\",\n        error: \"#ee5253\",\n        activated: \"#10ac84\",\n        disabled: \"#f85f63\",\n        badgeRedBg: \"#f7e0e6\",\n        badgeRedText: \"#95002a\",\n        badgeGreenBg: \"#dcf1f4\",\n        badgeGreenText: \"#034e59\",\n        border: \"#213240\",\n        borderLight: \"#375670\",\n        title: \"#ffffff\",\n        byline: \"#c5cbd0\",\n        background: \"#0c1a2a\",\n        backgroundLight: \"#081523\",\n        backgroundDark: \"#0f2237\",\n        backgroundTableHeader: \"#15151b\",\n        dialogBg: \"#13202e\",\n        dialogBgInner: \"#06111d\",\n        inputBg: \"#0b1826\",\n        ctaInverted: \"#29293b\",\n        ctaLight: \"#132b47\",\n        flowImportBg: \"#f3f2fb\",\n        flowImportBorder: \"#a7a0e9\",\n        flowImportText: \"#241d6c\",\n        flowExportBg: \"#e6f6f7\",\n        flowExportBorder: \"#5bb9c1\",\n        flowExportText: \"#113b3f\",\n        globalNotification: \"#245cc9\",\n        globalNotificationBg: \"#e7efff\",\n        navPrimary: \"#7d6eed\",\n        navBg: \"#f9f8ff\",\n        logoTitle: \"#7d6eed\",\n        positiveAmount: \"#23e386\",\n        negativeAmount: \"#fe1e38\",\n      },\n    },\n  },\n}\n\nexport default new Vuetify(opts)","import { ActionContext } from \"vuex\"\n\ninterface SidebarStoreState {\n  mini: boolean\n}\n\nconst state: SidebarStoreState = {\n  mini: true,\n}\n\nconst SidebarStore = {\n  namespaced: true,\n\n  state: (): SidebarStoreState => (state),\n\n  mutations: {\n    /**\n     * @param {string} state\n     * @param {any} val\n     */\n    SET_MINI(state: Record<string, any>, val: boolean): void {\n      state[\"mini\"] = val\n    },\n  },\n\n  actions: {\n    async changeMini({ commit }: ActionContext<SidebarStoreState, SidebarStoreState>,\n      val: boolean): Promise<void> {\n      commit(\"SET_MINI\", val)\n    },\n  },\n\n  getters: {\n    mini: (state: SidebarStoreState): boolean => state.mini,\n  },\n}\n\nexport default SidebarStore\n","import Vuex from \"vuex\"\nimport Vue from \"vue\"\n\nimport createPersistedState from \"vuex-persistedstate\"\n\nimport SidebarStore from \"./store/sidebarstore\"\n\nVue.use(Vuex)\n\nconst ls = window.sessionStorage\n\nconst opts = {\n  modules: {\n    /* General */\n    sidebar: SidebarStore,\n  },\n  plugins: [\n    createPersistedState({\n      storage: {\n        getItem: (key) => ls.getItem(key),\n        setItem: (key, value) => ls.setItem(key, value),\n        removeItem: (key) => ls.removeItem(key),\n      },\n    }),\n  ],\n}\n\nexport default new Vuex.Store(opts)\n","import _Vuetify from \"./vuetify\"\nimport _Vuex from \"./vuex\"\n\nexport { default as pinia } from \"@/plugins/pinia\"\n\nexport const vuetify = _Vuetify\nexport const store = _Vuex","import Vue from \"vue\"\nimport Locale from \"@/modules/utils/locales\"\nimport { __ as doubleTranslate } from \"@/modules/utils/localehelpers\"\n\ninterface TranslateMixinType {\n  methods: {\n    // eslint-disable-next-line\n    _(msg: string): string\n    // eslint-disable-next-line\n    __(textId: string, arr: string[]): string\n  },\n}\n\nconst MixinImpl: TranslateMixinType = {\n  methods: {\n    // Lets us use Locale _ in html\n    _(msg: string) {\n      return Locale.translate(msg)\n    },\n\n    __(textId: string, arr: string[]): string {\n      return doubleTranslate(textId, arr)\n    },\n  },\n}\n\nconst TranslateMixin = Vue.extend(MixinImpl)\n\nexport default TranslateMixin","import Vue from \"vue\"\n\nimport { vuetify, store } from \"@/plugins\"\nimport { pinia } from \"@/plugins\"\nimport { useLocale } from \"@/plugins/store/localestore\"\n\nimport { textMixin, actionMixin } from \"@/mixins\"\nimport TranslateMixin from \"@/mixins/translatemixin\"\n\nimport ResellerUser from \"@/modules/injected-js-handlers/reseller-user\"\n\nimport \"@/css/global.scss\"\n\nVue.mixin(textMixin)\nVue.mixin(actionMixin)\nVue.mixin(TranslateMixin)\n\nasync function fetchLocale(): Promise<void> {\n  const lang = ResellerUser.language() ?? \"en\"\n  const res = await fetch(`/_locale/${lang}`)\n  const data = await res.json()\n\n  useLocale().setLocale({\n    countries: data[\"countries\"],\n    currencies: data[\"currencies\"],\n    languages: data[\"languages\"],\n    texts: data[\"texts\"],\n    timezones: data[\"timezones\"],\n  })\n}\n\n/**\n *\n * @param data\n * @param mountEl\n */\nexport async function createNewInstance(\n  data: object = {},\n  mountEl: string\n): Promise<Vue> {\n  await fetchLocale()\n\n  return new Vue({\n    ...data,\n\n    store,\n\n    pinia,\n\n    vuetify,\n  }).$mount(mountEl)\n}\n","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport Locale from \"@/modules/utils/locales\"\n\nexport default defineComponent({\n\n  props: {\n    title: String,\n\n    description: String,\n    maxWidth: {\n      type: Number,\n      default: 360,\n    },\n    showButtons: {\n      type: Boolean,\n      default: true,\n    },\n    customClass: String,\n  },\n\n  data() {\n    return {\n      dialog: false,\n    }\n  },\n\n  methods: {\n    open() {\n      this.dialog = true\n    },\n\n    close() {\n      this.dialog = false\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n</script>\n<template>\n  <div>\n    <VDialog\n      v-model=\"dialog\"\n      :max-width=\"maxWidth\"\n      scrollable\n      persistent\n      content-class=\"dialog\"\n    >\n      <VCard\n        v-if=\"dialog\"\n        :data-test-id=\"$attrs['data-test-id']\"\n        :class=\"customClass\"\n        class=\"action-dialog\"\n      >\n        <slot name=\"icon\"></slot>\n\n        <VCardTitle class=\"text-center pb-2 break-word\">\n          {{ title }}\n        </VCardTitle>\n\n        <VCardText\n          data-test-id=\"action-dialog-description\"\n          class=\"text-center\"\n        >\n          {{ description }}\n\n          <slot name=\"description\"></slot>\n        </VCardText>\n\n        <VCard\n          v-if=\"$scopedSlots.content\"\n          flat\n        >\n          <slot name=\"content\"></slot>\n        </VCard>\n\n        <VCardActions v-if=\"showButtons\">\n          <slot\n            v-if=\"!!$scopedSlots.buttons\"\n            name=\"buttons\"\n          >\n          </slot>\n\n          <VBtn\n            v-else\n            @click=\"close\"\n            depressed\n            color=\"grey--text\"\n            class=\"cancel\"\n            data-test-id=\"action-dialog-close-button\"\n          >\n            {{ _(\"Close\") }}\n          </VBtn>\n        </VCardActions>\n      </VCard>\n    </VDialog>\n  </div>\n</template>\n<style scoped lang=\"scss\">\n.v-card__title {\n  margin: 0 auto;\n}\n\n.v-card__actions {\n  display: flex;\n  gap: 4px;\n  width: 100%;\n  justify-content: center;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ActionDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ActionDialog.vue?vue&type=template&id=2b09f4be&scoped=true\"\nimport script from \"./ActionDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./ActionDialog.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ActionDialog.vue?vue&type=style&index=0&id=2b09f4be&prod&scoped=true&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  \"2b09f4be\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(VDialog,{attrs:{\"max-width\":_vm.maxWidth,\"scrollable\":\"\",\"persistent\":\"\",\"content-class\":\"dialog\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[(_vm.dialog)?_c(VCard,{staticClass:\"action-dialog\",class:_vm.customClass,attrs:{\"data-test-id\":_vm.$attrs['data-test-id']}},[_vm._t(\"icon\"),_vm._v(\" \"),_c(VCardTitle,{staticClass:\"text-center pb-2 break-word\"},[_vm._v(\"\\n        \"+_vm._s(_vm.title)+\"\\n      \")]),_vm._v(\" \"),_c(VCardText,{staticClass:\"text-center\",attrs:{\"data-test-id\":\"action-dialog-description\"}},[_vm._v(\"\\n        \"+_vm._s(_vm.description)+\"\\n\\n        \"),_vm._t(\"description\")],2),_vm._v(\" \"),(_vm.$scopedSlots.content)?_c(VCard,{attrs:{\"flat\":\"\"}},[_vm._t(\"content\")],2):_vm._e(),_vm._v(\" \"),(_vm.showButtons)?_c(VCardActions,[(!!_vm.$scopedSlots.buttons)?_vm._t(\"buttons\"):_c(VBtn,{staticClass:\"cancel\",attrs:{\"depressed\":\"\",\"color\":\"grey--text\",\"data-test-id\":\"action-dialog-close-button\"},on:{\"click\":_vm.close}},[_vm._v(\"\\n          \"+_vm._s(_vm._(\"Close\"))+\"\\n        \")])],2):_vm._e()],2):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nexport default defineComponent({\n  name: \"CoreSelect\",\n\n  inheritAttrs: false,\n\n  props: {\n    value: null,\n\n    items: {\n      type: Array,\n      required: true,\n    },\n    rules: Array,\n    dataTestId: String,\n    itemValue: {\n      type: [ String, Function ],\n      default: () => \"value\",\n    },\n    itemText: {\n      type: [ String, Function ],\n      default: () => \"text\",\n    },\n  },\n\n  methods: {\n    getValue(item: any): any {\n      if (typeof(this.itemValue) === \"function\") {\n        return this.itemValue(item)\n      }\n      else {\n        return item[this.itemValue]\n      }\n    },\n\n    getText(item: any): string {\n      if (typeof(this.itemText) === \"function\") {\n        return this.itemText(item)\n      }\n      else {\n        return item[this.itemText]\n      }\n    },\n  },\n})\n</script>\n\n<template>\n  <span :data-test-id=\"dataTestId\">\n    <VSelect\n      v-bind=\"$attrs\"\n      :value=\"value\"\n      :items=\"items\"\n      :rules=\"rules\"\n      :item-value=\"itemValue\"\n      :item-text=\"itemText\"\n      :menu-props=\"{ contentProps: dataTestId ? { 'data-test-id': dataTestId + '-menu'}: {} }\"\n      outlined\n      dense\n    >\n      <template #item=\"{ item, on }\">\n        <VListItem\n          :class=\"{ 'primary--text v-list-item--active': getValue(item) === value }\"\n          v-on=\"on\"\n          @click=\"$emit('change', getValue(item))\"\n        >\n          <VListItemTitle\n            :data-test-id=\"getValue(item)\"\n          >\n            {{ getText(item) }}\n          </VListItemTitle>\n        </VListItem>\n      </template>\n    </VSelect>\n  </span>\n</template>\n\n<style\n  scoped\n  lang=\"scss\"\n>\n</style>","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CoreSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CoreSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CoreSelect.vue?vue&type=template&id=16f23188&scoped=true\"\nimport script from \"./CoreSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./CoreSelect.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  \"16f23188\",\n  null\n  \n)\n\nexport default component.exports","import { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('span',{attrs:{\"data-test-id\":_vm.dataTestId}},[_c(VSelect,_vm._b({attrs:{\"value\":_vm.value,\"items\":_vm.items,\"rules\":_vm.rules,\"item-value\":_vm.itemValue,\"item-text\":_vm.itemText,\"menu-props\":{ contentProps: _vm.dataTestId ? { 'data-test-id': _vm.dataTestId + '-menu'}: {} },\"outlined\":\"\",\"dense\":\"\"},scopedSlots:_vm._u([{key:\"item\",fn:function({ item, on }){return [_c(VListItem,_vm._g({class:{ 'primary--text v-list-item--active': _vm.getValue(item) === _vm.value },on:{\"click\":function($event){_vm.$emit('change', _vm.getValue(item))}}},on),[_c(VListItemTitle,{attrs:{\"data-test-id\":_vm.getValue(item)}},[_vm._v(\"\\n          \"+_vm._s(_vm.getText(item))+\"\\n        \")])],1)]}}])},'VSelect',_vm.$attrs,false))],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nexport default defineComponent({\n  name: \"CoreAutocomplete\",\n\n  props: {\n    value: null,\n\n    items: {\n      type: Array,\n      required: true,\n    },\n    rules: Array,\n    dataTestId: String,\n    itemValue: {\n      type: String,\n      default: () => \"value\",\n    },\n    itemText: {\n      type: String,\n      default: () => \"text\",\n    },\n  },\n})\n</script>\n\n<template>\n  <VAutocomplete\n    :value=\"value\"\n    :items=\"items\"\n    :rules=\"rules\"\n    :data-test-id=\"dataTestId\"\n    :menu-props=\"{ contentProps: dataTestId ? { 'data-test-id': dataTestId + '-menu'}: {} }\"\n    :item-value=\"itemValue\"\n    :item-text=\"itemText\"\n    outlined\n    dense\n    class=\"medium-width\"\n  >\n    <template #item=\"{ item, on }\">\n      <VListItem\n        :class=\"{ 'primary--text v-list-item--active': item[itemValue] === value }\"\n        v-on=\"on\"\n        @click=\"$emit('change', item[itemValue])\"\n      >\n        <VListItemTitle\n          :data-test-id=\"item[itemValue]\"\n        >\n          {{ item[itemText] }}\n        </VListItemTitle>\n      </VListItem>\n    </template>\n  </VAutocomplete>\n</template>\n\n<style\n  scoped\n  lang=\"scss\"\n>\n</style>","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CoreAutocomplete.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CoreAutocomplete.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CoreAutocomplete.vue?vue&type=template&id=6e412924&scoped=true\"\nimport script from \"./CoreAutocomplete.vue?vue&type=script&lang=ts\"\nexport * from \"./CoreAutocomplete.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  \"6e412924\",\n  null\n  \n)\n\nexport default component.exports","import { VAutocomplete } from 'vuetify/lib/components/VAutocomplete';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VAutocomplete,{staticClass:\"medium-width\",attrs:{\"value\":_vm.value,\"items\":_vm.items,\"rules\":_vm.rules,\"data-test-id\":_vm.dataTestId,\"menu-props\":{ contentProps: _vm.dataTestId ? { 'data-test-id': _vm.dataTestId + '-menu'}: {} },\"item-value\":_vm.itemValue,\"item-text\":_vm.itemText,\"outlined\":\"\",\"dense\":\"\"},scopedSlots:_vm._u([{key:\"item\",fn:function({ item, on }){return [_c(VListItem,_vm._g({class:{ 'primary--text v-list-item--active': item[_vm.itemValue] === _vm.value },on:{\"click\":function($event){return _vm.$emit('change', item[_vm.itemValue])}}},on),[_c(VListItemTitle,{attrs:{\"data-test-id\":item[_vm.itemValue]}},[_vm._v(\"\\n        \"+_vm._s(item[_vm.itemText])+\"\\n      \")])],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nexport default defineComponent({\n  inheritAttrs: false,\n\n  props: {\n    text: { type: String },\n\n    direction: {\n      type: String,\n      default: \"bottom\",\n    },\n    openDelay: {\n      type: Number,\n      default: () => 200,\n    },\n  },\n})\n</script>\n<template>\n  <VTooltip\n    v-bind=\"$attrs\"\n    :left=\"direction === 'left'\"\n    :right=\"direction === 'right'\"\n    :bottom=\"direction === 'bottom'\"\n    :top=\"direction === 'top'\"\n    :open-delay=\"openDelay\"\n    class=\"inverted-tooltip\"\n    max-width=\"400\"\n    content-class=\"inverted-tooltip\"\n  >\n    <template #activator=\"{ on }\">\n      <span\n        v-if=\"!!$scopedSlots.activator\"\n        v-on=\"on\"\n      >\n        <slot name=\"activator\"> </slot>\n      </span>\n      <span\n        v-else\n        v-on=\"on\"\n        class=\"d-flex align-center ml-1 cursor-help\"\n      >\n        <FontAwesomeIcon\n          small\n          icon=\"fa-regular fa-circle-question\"\n        >\n        </FontAwesomeIcon>\n      </span>\n    </template>\n    <span>\n      <span>{{ text }}</span>\n    </span>\n  </VTooltip>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PbTooltip.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PbTooltip.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PbTooltip.vue?vue&type=template&id=4e60e9e4&scoped=true\"\nimport script from \"./PbTooltip.vue?vue&type=script&lang=ts\"\nexport * from \"./PbTooltip.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  \"4e60e9e4\",\n  null\n  \n)\n\nexport default component.exports","import { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VTooltip,_vm._b({staticClass:\"inverted-tooltip\",attrs:{\"left\":_vm.direction === 'left',\"right\":_vm.direction === 'right',\"bottom\":_vm.direction === 'bottom',\"top\":_vm.direction === 'top',\"open-delay\":_vm.openDelay,\"max-width\":\"400\",\"content-class\":\"inverted-tooltip\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [(!!_vm.$scopedSlots.activator)?_c('span',_vm._g({},on),[_vm._t(\"activator\")],2):_c('span',_vm._g({staticClass:\"d-flex align-center ml-1 cursor-help\"},on),[_c('FontAwesomeIcon',{attrs:{\"small\":\"\",\"icon\":\"fa-regular fa-circle-question\"}})],1)]}}],null,true)},'VTooltip',_vm.$attrs,false),[_vm._v(\" \"),_c('span',[_c('span',[_vm._v(_vm._s(_vm.text))])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { computed, defineComponent, PropType, ref, SetupContext } from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\nimport Locale from \"@/modules/utils/locales\"\n\nimport { JsonData } from \"@/types\"\n\nexport interface EmittedChange {\n  path: (string | null)[]\n  newValue?: JsonData\n  newKey?: string\n  action?: \"add\"\n  isArray?: boolean\n}\n\nexport default defineComponent({\n  name: \"JsonNode\",\n\n  props: {\n    nodeKey: { type: String },\n\n    nodeValue: { type: null as unknown as PropType<JsonData>, required: true },\n    isLast: { type: Boolean },\n    level: { type: Number, default: () => 0 },\n    isEditable: { type: Boolean },\n    expandedOnStart: { type: Boolean },\n    noActions: Boolean,\n    parentIsArray: Boolean,\n  },\n\n  setup(props, { emit }: SetupContext<(\"change\")[]>) {\n    const renderKey = ref(0)\n    const isFolded = ref<boolean>(!props.expandedOnStart)\n    const newKey = ref<string>(\"\")\n    const inputError = ref<string | null>(null)\n\n    const valueType = computed<string>(() => {\n      const v = props.nodeValue\n      if (v === null) return \"null\"\n      const type = typeof v\n      if (type === \"object\") {\n        return Array.isArray(v) ? \"array\" : \"object\"\n      }\n      return type\n    })\n\n    const isArray = computed<boolean>(() => valueType.value === \"array\")\n    const isObject = computed<boolean>(() => valueType.value === \"object\")\n    const isStructural = computed<boolean>(() => isArray.value || isObject.value)\n    const isPrimitive = computed<boolean>(() => !isStructural.value)\n\n    const nodeSize = computed<string>(() => {\n      if (isStructural.value && props.nodeValue) {\n        const size = Object.keys(props.nodeValue).length\n        return isArray.value ? `(${size} items)` : `(${size} properties)`\n      }\n      return \"\"\n    })\n\n    const formattedValue = computed<string>(() => {\n      const v = props.nodeValue\n      if (v === null) return \"null\"\n      if (typeof v === \"string\") return `\"${v}\"`\n      return String(v)\n    })\n\n    const copyButtonClass = computed(() => {\n      if (isPrimitive.value) return \"primitive\"\n      return \"\"\n    })\n\n    const valueTypeClass = computed<string>(() => `json-type-${valueType.value}`)\n    const keyRules = computed(() => {\n      return [ (v: any) => !!v || \"Key is required\" ]\n    })\n\n    type CopyMode = \"key_value\" | \"value_only\"\n\n    const copyNodeToClipboard = async (mode: CopyMode): Promise<void> => {\n      let contentToCopy: string\n\n      if (mode === \"key_value\") {\n        if (Util.isSet(props.nodeKey)) {\n          // Child node: copy as a key-value pair object\n          const obj = { [props.nodeKey]: props.nodeValue }\n          contentToCopy = JSON.stringify(obj, null, 2)\n        } else {\n          // Root node: copy the entire value\n          contentToCopy = JSON.stringify(props.nodeValue, null, 2)\n        }\n      } else {\n        contentToCopy = JSON.stringify(props.nodeValue, null, 2)\n      }\n\n      try {\n        await navigator.clipboard.writeText(contentToCopy)\n      }\n      catch {\n        fallbackCopyToClipboard(contentToCopy)\n      }\n    }\n\n    const fallbackCopyToClipboard = (payload: string) => {\n      const textArea = document.createElement(\"textarea\")\n      textArea.style.position = \"absolute\"\n      textArea.style.top = \"-1000%\"\n      textArea.style.whiteSpace = \"pre\"\n\n      textArea.value = payload\n      document.body.appendChild(textArea)\n      textArea.select()\n\n      document.execCommand(\"copy\")\n\n      document.body.removeChild(textArea)\n    }\n\n    const isLastIndex = (index: number | undefined, nodeValue: JsonData): boolean => {\n      if (Util.isObject(nodeValue)) {\n        return index === Object.keys((nodeValue as unknown as object)).length - 1\n      }\n      return false\n    }\n\n    const toggleFold = (): void => {\n      if (isStructural.value) {\n        isFolded.value = !isFolded.value\n      }\n    }\n\n    const validateValue = (event: Event): void => {\n      if (!props.isEditable) return\n\n      const target = event.target as HTMLElement\n      const rawInput = target.textContent || \"\"\n      inputError.value = null\n\n      try {\n        let testValue = rawInput.trim()\n\n        // Check if the value looks like a quoted string\n        if (\n          !(testValue.startsWith(\"\\\"\") && testValue.endsWith(\"\\\"\")) &&\n          !(testValue.startsWith(\"'\") && testValue.endsWith(\"'\"))\n        ) {\n          // Attempt to parse non-quoted primitives (number, boolean, null)\n          JSON.parse(testValue)\n        } else {\n          // Input is quoted. Normalize single quotes to double quotes for JSON.parse.\n          if (testValue.startsWith(\"'\") && testValue.endsWith(\"'\")) {\n            testValue = `\"${testValue.substring(1, testValue.length - 1)}\"`\n          }\n          JSON.parse(testValue)\n        }\n      } catch (e: any) {\n        inputError.value = e.message.split(\"\\n\")[0]\n      }\n    }\n\n    const handleChildChange = (change: EmittedChange): void => {\n      change.path.unshift(props.nodeKey || null)\n      emit(\"change\", change)\n    }\n\n    return {\n      // State\n      isFolded, inputError, newKey, renderKey,\n\n      // Computed\n      isArray, isObject, isStructural, isPrimitive, valueTypeClass,\n      formattedValue, nodeSize, keyRules, copyButtonClass,\n\n      // Methods\n      toggleFold,\n      handleChildChange, validateValue,\n      isLastIndex, copyNodeToClipboard,\n\n      // helpers\n      translate: Locale.translate,\n    }\n  },\n})\n</script>\n\n<template>\n  <div\n    :class=\"{ 'no-actions': noActions }\"\n    class=\"json-node\"\n    :key=\"String(renderKey) + '_render_key'\"\n  >\n    <span\n      v-if=\"!noActions\"\n      class=\"node-actions\"\n    >\n      <VMenu\n        offset-y\n        left\n      >\n        <template #activator=\"{ on, attrs }\">\n          <button\n            v-bind=\"attrs\"\n            :class=\"copyButtonClass\"\n            @click.prevent=\"() => {}\"\n            v-on=\"on\"\n            class=\"action-btn copy-btn\"\n          >\n            <VIcon small>far fa-copy</VIcon>\n          </button>\n        </template>\n\n        <VList\n          dense\n          class=\"dense-list\"\n        >\n          <VListItem\n            @click=\"copyNodeToClipboard('key_value')\"\n            dense\n          >\n            <VListItemTitle>\n              <VIcon\n                small\n                class=\"mr-2\"\n              >far fa-copy</VIcon>\n              Copy Key & Value\n            </VListItemTitle>\n          </VListItem>\n\n          <VListItem\n            @click=\"copyNodeToClipboard('value_only')\"\n            dense\n          >\n            <VListItemTitle>\n              <VIcon\n                small\n                class=\"mr-2\"\n              >far fa-copy</VIcon>\n              Copy Value Only\n            </VListItemTitle>\n          </VListItem>\n        </VList>\n      </VMenu>\n    </span>\n\n    <span\n      v-if=\"nodeKey && !parentIsArray\"\n      :class=\"{'editable-key': isEditable}\"\n      :contenteditable=\"false\"\n    >\n      <span\n        class=\"json-key\"\n      >\"{{ nodeKey }}\"</span>\n      <span class=\"json-punctuation\">: </span>\n    </span>\n\n    <span v-if=\"isStructural\">\n      <span\n        @click=\"toggleFold\"\n        class=\"json-punctuation start-bracket\"\n      >\n        {{ isArray ? '[' : '{' }}\n      </span>\n\n      <span\n        v-if=\"!isFolded\"\n        class=\"node-length-hint\"\n      >\n        {{ nodeSize }}\n      </span>\n      <span\n        v-else\n        @click=\"toggleFold\"\n        class=\"node-length-hint folded-hint\"\n      >\n        <span class=\"ellipsis\">...</span> {{ nodeSize }}\n      </span>\n    </span>\n\n    <span\n      v-if=\"isPrimitive && !isStructural\"\n      :class=\"[valueTypeClass, {'editable-value': isEditable}]\"\n      :contenteditable=\"false\"\n      class=\"json-value\"\n    >\n      {{ formattedValue }}\n    </span>\n\n    <div\n      v-if=\"inputError\"\n      class=\"validation-error\"\n    >\n      <VIcon\n        small\n        color=\"error\"\n      >\n        fa-regular fa-triangle-exclamation\n      </VIcon>\n      Invalid JSON format: {{ inputError }}\n    </div>\n\n    <div\n      v-if=\"isStructural && !isFolded\"\n      :class=\"{ 'pl-4': noActions }\"\n      class=\"children-container\"\n    >\n      <JsonNode\n        v-for=\"(childValue, childKey, index) in nodeValue\"\n        :node-key=\"String(childKey)\"\n        :node-value=\"childValue\"\n        :is-last=\"isLastIndex(index, nodeValue)\"\n        :level=\"level + 1\"\n        :is-editable=\"isEditable\"\n        :expanded-on-start=\"expandedOnStart\"\n        :no-actions=\"noActions\"\n        :parent-is-array=\"isArray\"\n        @change=\"handleChildChange\"\n        :key=\"childKey\"\n      />\n    </div>\n\n    <span v-if=\"isStructural\">\n      <span class=\"json-punctuation end-bracket\">{{ isArray ? ']' : '}' }}</span>\n      <span\n        v-if=\"!isLast\"\n        class=\"json-punctuation\"\n      >,</span>\n    </span>\n\n    <span\n      v-else-if=\"!isLast\"\n      class=\"json-punctuation\"\n    >,</span>\n  </div>\n</template>\n\n<style\n    scoped\n    lang=\"scss\"\n>\n.json-node {\n  line-height: 1.5;\n  white-space: nowrap;\n  position: relative;\n}\n\n.json-node:not(.no-actions) {\n  padding-left: 1.5em;\n}\n\n.action-btn {\n  background: #444;\n  color: white;\n  border: none;\n  border-radius: 3px;\n  padding: 2px 6px;\n  margin-left: 5px;\n  cursor: pointer;\n  font-size: 0.8em;\n  line-height: 1;\n  transition: background-color 0.2s;\n  user-select: none;\n}\n\n.action-btn:hover {\n  background: #666;\n}\n\n.json-key {\n  color: #c90;\n  cursor: default;\n}\n\n.json-punctuation {\n  color: #aaa;\n  user-select: none;\n}\n\n.json-value {\n  padding: 0 4px;\n}\n\n.json-type-string {\n  color: #0b3;\n}\n\n.json-type-number {\n  color: #25a;\n}\n\n.json-type-boolean {\n  color: #d19;\n}\n\n.json-type-null {\n  color: #f70;\n}\n\n.start-bracket {\n  cursor: pointer;\n}\n\n.node-length-hint {\n  font-size: 0.8em;\n  color: #888;\n  padding-left: 5px;\n  user-select: none;\n}\n\n.folded-hint {\n  cursor: pointer;\n  font-style: italic;\n}\n\n.ellipsis {\n  font-size: 1.5em;\n  line-height: 0.5;\n  vertical-align: sub;\n}\n\n.validation-error {\n  display: inline-flex;\n  align-items: center;\n  margin-left: 15px;\n  padding: 3px 8px;\n  background-color: #501d1d;\n\n  /* Dark red background for contrast */\n  color: #ff5252;\n\n  /* Vuetify error red */\n  border: 1px solid #ff5252;\n  border-radius: 4px;\n  font-size: 0.8em;\n  font-family: sans-serif;\n}\n\n.validation-error .v-icon {\n  margin-right: 5px;\n}\n\n// Make sure the editable span is styled correctly when there is an error\n.json-value[contenteditable=\"true\"] {\n  /* Error color border */\n  outline: 2px solid #ff5252;\n}\n\n.node-actions {\n  position: relative; /* Ensure copy button is positioned correctly */\n  display: inline-block;\n  margin-right: -7px;\n}\n\n/* Style for the new Copy button */\n.copy-btn {\n  background: #3a5c9a; /* Blue color for copy action */\n  padding: 2px 5px;\n  margin-left: 5px;\n  opacity: 0;\n  line-height: 1.2;\n\n  // Position near the key/start bracket\n  position: absolute;\n  left: -33px; /* Adjust as needed */\n  top: -15px;\n}\n\n.copy-btn.primitive {\n  top: -15px !important;\n}\n\n/* Show copy button on hover, just like delete */\n.json-node:hover > .node-actions > .copy-btn {\n  opacity: 1;\n}\n\n.dense-list {\n  .v-list-item {\n    min-height: 25px !important;\n  }\n\n  .v-list-item:not(:last-child) {\n    border-bottom: 1px solid var(--v-border-base);\n  }\n}\n</style>","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JsonNode.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JsonNode.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./JsonNode.vue?vue&type=template&id=66d99210&scoped=true\"\nimport script from \"./JsonNode.vue?vue&type=script&lang=ts\"\nexport * from \"./JsonNode.vue?vue&type=script&lang=ts\"\nimport style0 from \"./JsonNode.vue?vue&type=style&index=0&id=66d99210&prod&scoped=true&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  \"66d99210\",\n  null\n  \n)\n\nexport default component.exports","import { 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';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{key:String(_vm.renderKey) + '_render_key',staticClass:\"json-node\",class:{ 'no-actions': _vm.noActions }},[(!_vm.noActions)?_c('span',{staticClass:\"node-actions\"},[_c(VMenu,{attrs:{\"offset-y\":\"\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('button',_vm._g(_vm._b({staticClass:\"action-btn copy-btn\",class:_vm.copyButtonClass,on:{\"click\":function($event){$event.preventDefault();return (() => {}).apply(null, arguments)}}},'button',attrs,false),on),[_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"far fa-copy\")])],1)]}}],null,false,413083617)},[_vm._v(\" \"),_c(VList,{staticClass:\"dense-list\",attrs:{\"dense\":\"\"}},[_c(VListItem,{attrs:{\"dense\":\"\"},on:{\"click\":function($event){return _vm.copyNodeToClipboard('key_value')}}},[_c(VListItemTitle,[_c(VIcon,{staticClass:\"mr-2\",attrs:{\"small\":\"\"}},[_vm._v(\"far fa-copy\")]),_vm._v(\"\\n            Copy Key & Value\\n          \")],1)],1),_vm._v(\" \"),_c(VListItem,{attrs:{\"dense\":\"\"},on:{\"click\":function($event){return _vm.copyNodeToClipboard('value_only')}}},[_c(VListItemTitle,[_c(VIcon,{staticClass:\"mr-2\",attrs:{\"small\":\"\"}},[_vm._v(\"far fa-copy\")]),_vm._v(\"\\n            Copy Value Only\\n          \")],1)],1)],1)],1)],1):_vm._e(),_vm._v(\" \"),(_vm.nodeKey && !_vm.parentIsArray)?_c('span',{class:{'editable-key': _vm.isEditable},attrs:{\"contenteditable\":false}},[_c('span',{staticClass:\"json-key\"},[_vm._v(\"\\\"\"+_vm._s(_vm.nodeKey)+\"\\\"\")]),_vm._v(\" \"),_c('span',{staticClass:\"json-punctuation\"},[_vm._v(\": \")])]):_vm._e(),_vm._v(\" \"),(_vm.isStructural)?_c('span',[_c('span',{staticClass:\"json-punctuation start-bracket\",on:{\"click\":_vm.toggleFold}},[_vm._v(\"\\n      \"+_vm._s(_vm.isArray ? '[' : '{')+\"\\n    \")]),_vm._v(\" \"),(!_vm.isFolded)?_c('span',{staticClass:\"node-length-hint\"},[_vm._v(\"\\n      \"+_vm._s(_vm.nodeSize)+\"\\n    \")]):_c('span',{staticClass:\"node-length-hint folded-hint\",on:{\"click\":_vm.toggleFold}},[_c('span',{staticClass:\"ellipsis\"},[_vm._v(\"...\")]),_vm._v(\" \"+_vm._s(_vm.nodeSize)+\"\\n    \")])]):_vm._e(),_vm._v(\" \"),(_vm.isPrimitive && !_vm.isStructural)?_c('span',{staticClass:\"json-value\",class:[_vm.valueTypeClass, {'editable-value': _vm.isEditable}],attrs:{\"contenteditable\":false}},[_vm._v(\"\\n    \"+_vm._s(_vm.formattedValue)+\"\\n  \")]):_vm._e(),_vm._v(\" \"),(_vm.inputError)?_c('div',{staticClass:\"validation-error\"},[_c(VIcon,{attrs:{\"small\":\"\",\"color\":\"error\"}},[_vm._v(\"\\n      fa-regular fa-triangle-exclamation\\n    \")]),_vm._v(\"\\n    Invalid JSON format: \"+_vm._s(_vm.inputError)+\"\\n  \")],1):_vm._e(),_vm._v(\" \"),(_vm.isStructural && !_vm.isFolded)?_c('div',{staticClass:\"children-container\",class:{ 'pl-4': _vm.noActions }},_vm._l((_vm.nodeValue),function(childValue,childKey,index){return _c('JsonNode',{key:childKey,attrs:{\"node-key\":String(childKey),\"node-value\":childValue,\"is-last\":_vm.isLastIndex(index, _vm.nodeValue),\"level\":_vm.level + 1,\"is-editable\":_vm.isEditable,\"expanded-on-start\":_vm.expandedOnStart,\"no-actions\":_vm.noActions,\"parent-is-array\":_vm.isArray},on:{\"change\":_vm.handleChildChange}})}),1):_vm._e(),_vm._v(\" \"),(_vm.isStructural)?_c('span',[_c('span',{staticClass:\"json-punctuation end-bracket\"},[_vm._v(_vm._s(_vm.isArray ? ']' : '}'))]),_vm._v(\" \"),(!_vm.isLast)?_c('span',{staticClass:\"json-punctuation\"},[_vm._v(\",\")]):_vm._e()]):(!_vm.isLast)?_c('span',{staticClass:\"json-punctuation\"},[_vm._v(\",\")]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, ref, watch } from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\nimport Debouncer from \"@/modules/utils/debounce\"\n\nimport { EmittedChange } from \"@/components/jsonviewer/JsonNode.vue\"\n\nimport { JsonNode } from \"@/components\"\n\nimport {\n  JsonData,\n} from \"@/types\"\n\nexport default defineComponent({\n  name: \"JsonViewer\",\n\n  components: {\n    JsonNode,\n  },\n\n  props: {\n    // Note: PropType is necessary for complex types in Vue 2/3 Options API\n    json: {\n      type: null,\n      required: true,\n      default: () => ({}),\n    },\n\n    isEditable: { type: Boolean, default: () => false },\n    expandedOnStart: { type: Boolean },\n    noActions: Boolean,\n    readonly: Boolean,\n  },\n\n  setup(props, { emit }) {\n    const parsedJson = ref<JsonData>({})\n    const error = ref<string | null>(null)\n    const renderKey = ref(0)\n    const debouncer = new Debouncer()\n\n    const parseJson = (input: JsonData | string): void => {\n      try {\n        if (typeof input === \"string\") {\n          parsedJson.value = JSON.parse(input) as JsonData\n        } else {\n          parsedJson.value = JSON.parse(JSON.stringify(input)) as JsonData\n        }\n        error.value = null\n      } catch (e: any) {\n        error.value = e.message\n        parsedJson.value = {}\n      }\n    }\n\n    parseJson(props.json)\n    watch(() => props.json, (newVal) => { parseJson(newVal) }, { deep: true })\n\n    const handleNodeChange = (payload: EmittedChange): void => {\n      const { path, newValue, newKey, action, isArray } = payload\n\n      const newJson = JSON.parse(JSON.stringify(parsedJson.value)) as JsonData\n      // Current is initially the root object\n      let current: any = newJson\n\n      const targetKey = path[path.length - 1]\n      const isRootAction = path.length === 1 && targetKey === null\n\n      // Assume root initially, this will be the container we modify if it's an action\n      let parentNode: any = newJson\n\n      // Traverse the object structure to find the target's PARENT\n      // The traversal stops one step short of the key being acted upon.\n      for (let i = 0; i < path.length - 1; i++) {\n        const key = path[i]\n        if (Util.isSet(key)) {\n          current = current[key]\n        }\n      }\n\n      // If not a root action, 'current' is the parent of the final key.\n      if (!isRootAction) {\n        parentNode = current\n      }\n\n      if (action === \"add\") {\n        if (targetKey) {\n          const targetContainer: any = isRootAction ? newJson : current[targetKey]\n\n          if (isArray) {\n            targetContainer.push(newValue)\n          } else {\n            let uniqueKey = newKey!\n            let counter = 1\n\n            // Ensure the key name is unique in the target container\n            // Using bracket notation for dynamic key access\n            while (targetContainer.hasOwnProperty(uniqueKey)) {\n              if (newKey) {\n                uniqueKey = newKey + counter\n              }\n\n              counter++\n            }\n            targetContainer[uniqueKey] = newValue\n          }\n        }\n        else if (newKey) {\n          parentNode[newKey] = newValue\n        }\n      }\n      else {\n        // Handle updates (rename/value change)\n        const finalKey = path[path.length - 1] as string\n        const parent: any = current\n\n        if (newKey !== undefined) {\n          // Check if we are renaming a key on an object\n          // (not an array, where finalKey is an index)\n          if (Array.isArray(parent)) {\n            // Should not happen\n          } else {\n            const orderedKeys = Object.keys(parent)\n            const newParent = {} as any\n\n            for (const key of orderedKeys) {\n              if (key === finalKey) {\n                // Found the key to rename, insert the new key here\n                newParent[newKey] = parent[finalKey]\n              } else {\n                // Copy existing key/value\n                newParent[key] = parent[key]\n              }\n            }\n\n            // Clear the original object properties\n            for (const key in parent) {\n              delete parent[key]\n            }\n\n            // Reassign properties from the ordered map back to the original object\n            Object.assign(parent, newParent)\n          }\n        }\n\n        // Handle value change (applies to both key rename and pure value update)\n        if (newValue !== undefined) {\n          // Value update\n          parent[newKey !== undefined && !Array.isArray(parent) ? newKey : finalKey] = newValue\n        }\n      }\n\n      parsedJson.value = newJson\n      // Emit the updated data\n      emit(\"change\", newJson)\n      renderKey.value += 1\n    }\n\n    const validateJson = (json: any): boolean => {\n      try {\n        JSON.parse(json)\n        return true\n      }\n      catch {\n        return false\n      }\n    }\n\n    const jsonRule = (json: any): boolean | string => {\n      if (validateJson(json)) {\n        return true\n      }\n      else return \"Invalid json\"\n    }\n\n    const jsonAsString = (json: any): string => {\n      try {\n        return JSON.stringify(json, null, 2)\n      } catch {\n        return \"\"\n      }\n    }\n\n    const updateJsonManually = (json: any): void => {\n      if (validateJson(json)) {\n        debouncer.debounce(() => {\n          parseJson(json)\n          emit(\"change\", parsedJson.value)\n        })\n      }\n    }\n\n    return {\n      renderKey,\n      parsedJson,\n      error,\n\n      jsonRule,\n      jsonAsString,\n      updateJsonManually,\n      handleNodeChange,\n    }\n  },\n})\n</script>\n\n<template>\n  <div class=\"d-flex gap-2 full-width\">\n    <VCol\n      v-if=\"!readonly\"\n      :cols=\"6\"\n    >\n      <VTextarea\n        :value=\"jsonAsString(parsedJson)\"\n        :rules=\"[jsonRule]\"\n        @input=\"updateJsonManually\"\n        class=\"json-text-area\"\n      >\n      </VTextarea>\n    </VCol>\n\n    <VCol :cols=\"readonly ? 12 : 6\">\n      <div class=\"json-viewer-wrapper fill-height\">\n        <div\n          v-if=\"error\"\n          class=\"parse-error\"\n        >\n          Error: Cannot parse input JSON. <br> {{ error }}\n        </div>\n\n        <div\n          v-if=\"!error\"\n          class=\"json-tree-root\"\n        >\n          <JsonNode\n            :node-value=\"parsedJson\"\n            :level=\"0\"\n            :is-last=\"true\"\n            :is-editable=\"isEditable\"\n            :expanded-on-start=\"expandedOnStart\"\n            :no-actions=\"noActions\"\n            @change=\"handleNodeChange\"\n          />\n        </div>\n      </div>\n    </VCol>\n  </div>\n</template>\n\n<style\n    scoped\n    lang=\"scss\"\n>\n/* Global styles */\n.json-viewer-wrapper {\n  font-family: monospace;\n  background-color: #2a2a2a;\n  color: #fff;\n  padding: 15px;\n  border-radius: 8px;\n  min-width: 300px;\n  overflow: auto;\n}\n\n.viewer-hint {\n  font-size: 0.9em;\n  color: #999;\n  margin-bottom: 10px;\n}\n\n.action-symbol {\n  font-weight: bold;\n  color: #fff;\n  background-color: #555;\n  padding: 0 4px;\n  border-radius: 3px;\n  margin: 0 2px;\n}\n\n.parse-error {\n  background-color: #c33;\n  padding: 10px;\n  border-radius: 4px;\n  color: white;\n}\n\n.json-tree-root {\n  padding-left: 0;\n}\n\n.json-text-area {\n  height: 100%;\n\n  :deep(.v-input__control) {\n    height: 100%;\n\n    .v-text-field__details {\n      position: absolute;\n      bottom: 10px;\n    }\n\n    .v-input__slot {\n      height: 100%;\n\n      .v-text-field__slot {\n        height: 100%;\n      }\n    }\n  }\n}\n</style>","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JsonViewer.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./JsonViewer.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./JsonViewer.vue?vue&type=template&id=604f19d2&scoped=true\"\nimport script from \"./JsonViewer.vue?vue&type=script&lang=ts\"\nexport * from \"./JsonViewer.vue?vue&type=script&lang=ts\"\nimport style0 from \"./JsonViewer.vue?vue&type=style&index=0&id=604f19d2&prod&scoped=true&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  \"604f19d2\",\n  null\n  \n)\n\nexport default component.exports","import { VCol } from 'vuetify/lib/components/VGrid';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-flex gap-2 full-width\"},[(!_vm.readonly)?_c(VCol,{attrs:{\"cols\":6}},[_c(VTextarea,{staticClass:\"json-text-area\",attrs:{\"value\":_vm.jsonAsString(_vm.parsedJson),\"rules\":[_vm.jsonRule]},on:{\"input\":_vm.updateJsonManually}})],1):_vm._e(),_vm._v(\" \"),_c(VCol,{attrs:{\"cols\":_vm.readonly ? 12 : 6}},[_c('div',{staticClass:\"json-viewer-wrapper fill-height\"},[(_vm.error)?_c('div',{staticClass:\"parse-error\"},[_vm._v(\"\\n        Error: Cannot parse input JSON. \"),_c('br'),_vm._v(\" \"+_vm._s(_vm.error)+\"\\n      \")]):_vm._e(),_vm._v(\" \"),(!_vm.error)?_c('div',{staticClass:\"json-tree-root\"},[_c('JsonNode',{attrs:{\"node-value\":_vm.parsedJson,\"level\":0,\"is-last\":true,\"is-editable\":_vm.isEditable,\"expanded-on-start\":_vm.expandedOnStart,\"no-actions\":_vm.noActions},on:{\"change\":_vm.handleNodeChange}})],1):_vm._e()])])],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('span',[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineStore } from \"pinia\"\n\nimport { StoreKeys } from \"@/plugins/store\"\n\ninterface DialogStoreState {\n  index: number,\n}\n\nconst state: DialogStoreState = {\n  index: -1,\n}\n\nexport const useDialog = defineStore(StoreKeys.Dialog, {\n  state: (): DialogStoreState => (state),\n\n  actions: {\n    async updateZIndex(index: number): Promise<void> {\n      this.index = index\n    },\n  },\n})","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DraggableDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DraggableDialog.vue?vue&type=script&lang=ts\"","<script lang=\"ts\">\nimport { defineComponent, onMounted, onUnmounted, ref } from \"vue\"\nimport $ from \"jquery\"\nimport { storeToRefs } from \"pinia\"\n\nimport { useDialog } from \"@/plugins/store/dialogstore\"\n\nimport Debouncer, { DebouncerType } from \"@/modules/utils/debounce\"\nimport Util from \"@/modules/utils/util\"\n\ntype DialogHolder = {\n  el: HTMLElement | null,\n  elStartX: number,\n  elStartY: number,\n  mouseStartX: number,\n  mouseStartY: number,\n  oldTransition: string | null,\n}\n\nexport default defineComponent({\n  name: \"DraggableDialog\",\n\n  props: {\n    enabled: {\n      type: Boolean,\n      default: true,\n    },\n  },\n\n  setup(props) {\n    const { enabled } = props\n    const dialog = ref<DialogHolder | null>(null)\n    const debouncer: DebouncerType = new Debouncer(5)\n\n    const headerPressed = ref<boolean>(false)\n\n    onMounted(() => {\n      if (enabled) {\n        // @ts-ignore\n        $(document).on(\"mousedown\", \"html\", handleMouseDown)\n\n        // @ts-ignore\n        $(document).on(\"mousemove\",\"html\", handleMouseMove)\n\n        // @ts-ignore\n        $(document).on(\"mouseup\",\"html\", handleMouseUp)\n      }\n    })\n\n    onUnmounted(() => {\n      if (enabled) {\n        // @ts-ignore\n        $(document).off(\"mousedown\",\"html\", handleMouseDown)\n\n        // @ts-ignore\n        $(document).off(\"mousemove\",\"html\", handleMouseMove)\n\n        // @ts-ignore\n        $(document).off(\"mouseup\",\"html\", handleMouseUp)\n      }\n\n      updateZIndex(-1)\n    })\n\n    const dialogStore = useDialog()\n    const {\n      index: highestZIndex,\n    } = storeToRefs(dialogStore)\n\n    const {\n      updateZIndex,\n    } = dialogStore\n\n    function handleMouseDown(e: MouseEvent) {\n      /* If the button was the main button, i.e. normally the left mouse btn */\n      if (e.button !== 0) return\n\n      const closestDialog = getClosestDialog(e)\n\n      /* User clicked on the dialog */\n      if (closestDialog && $(closestDialog).has((e.target as Element)).length) {\n        handleZIndex(closestDialog)\n\n        const header = $(\".v-dialog.dialog.v-dialog--active .dialog-header .grabber\")\n\n        /* User clicked on header */\n        if ($(header).has((e.target as Element)).length && enabled) {\n          initMouseDown(e)\n        }\n      }\n    }\n\n    function initMouseDown(e: MouseEvent) {\n      const closestDialog = getClosestDialog(e)\n      headerPressed.value = true\n\n      if (!Util.isSet(closestDialog)) return /* Check that the dialog exists */\n\n      dialog.value = {\n        el: null,\n        mouseStartX: 0,\n        mouseStartY: 0,\n        elStartX: 0,\n        elStartY: 0,\n        oldTransition: null,\n      }\n\n      if (dialog.value) {\n        try {\n          dialog.value.el = closestDialog // element which should be moved\n          dialog.value.el.classList.add(\"grabbing\")\n\n          /* The start X and Y of the element */\n          dialog.value.mouseStartX = e.clientX\n          dialog.value.mouseStartY = e.clientY\n\n          /* Element start X and Y of the screen */\n          dialog.value.elStartX = dialog.value.el.getBoundingClientRect().left\n          dialog.value.elStartY = dialog.value.el.getBoundingClientRect().top\n\n          dialog.value.el.style.position = \"fixed\"\n          dialog.value.el.style.margin = \"0\"\n          dialog.value.oldTransition = dialog.value.el.style.transition\n          dialog.value.el.style.transition = \"none\"\n        } catch {\n          /* Sometimes dialog.el is undefined because user released the mouse\n             before method was done */\n        }\n      }\n    }\n\n    function handleMouseMove(e: MouseEvent) {\n      /* If the element is not correct, then skip */\n      if (!dialog.value || (dialog.value && dialog.value.el === undefined)) return\n\n      /* Throttle the updates somewhat */\n      debouncer.debounce(() => {\n        try {\n          if (dialog.value) {\n            if (dialog.value.el) {\n              /* The difference of the windows width and the element width */\n              const widthLeft = window.innerWidth - dialog.value.el.getBoundingClientRect().width\n              /* The difference of the windows height and the element height */\n              const heightLeft = window.innerHeight - dialog.value.el.getBoundingClientRect().height\n\n              /* The difference between start position of mouse click and where\n            * the mouse is now in X */\n              const xDiff = e.clientX - dialog.value.mouseStartX\n\n              /* Apply diff to dialog in X */\n              const newPosX = dialog.value.elStartX + xDiff\n\n              /* Prevent out of bounds */\n              const screenX = Math.max(newPosX, 0)\n\n              /* The difference between start position of mouse click and where\n              * the mouse is now in Y */\n              const yDiff = e.clientY - dialog.value.mouseStartY\n\n              /* Apply diff to dialog in Y */\n              const newPosY = dialog.value.elStartY + yDiff\n\n              /* Prevent out of bounds */\n              const screenY = Math.max(newPosY, 0)\n\n              if (dialog.value.el) {\n                /* Prevent out of bounds and apply new position to dialog */\n                dialog.value.el.style.left = Math.min(screenX, widthLeft) + \"px\"\n\n                /* Prevent out of bounds and apply new position to dialog */\n                dialog.value.el.style.top = Math.min(screenY, heightLeft) + \"px\"\n              }\n            }\n          }\n        } catch {\n          /* Sometimes dialog.el is undefined because user released the mouse\n             before method was done */\n        }\n      })\n    }\n\n    function handleMouseUp() {\n      if (!dialog.value || (dialog.value && dialog.value.el === undefined)) return\n      headerPressed.value = false\n\n      try {\n        if (dialog.value.el) {\n          dialog.value.el.classList.remove(\"grabbing\")\n          dialog.value.el.classList.remove(\"grab\")\n\n          if (dialog.value.oldTransition) {\n            dialog.value.el.style.transition = dialog.value.oldTransition\n          }\n\n          dialog.value = null\n        }\n      } catch {\n        /* Sometimes dialog.el is undefined because user released the mouse\n           before method was done */\n      }\n    }\n\n    function handleZIndex(dialog: HTMLElement) {\n      const current = dialog || $.get(\".v-dialog.dialog.v-dialog--active\")\n\n      const zIndex = parseFloat($(current).parent().css(\"z-index\")) || 0\n\n      if (zIndex > highestZIndex.value) {\n        updateZIndex(zIndex)\n      }\n\n      if (zIndex < highestZIndex.value) {\n        /* Set new highest zIndex */\n        $(current).parent().css(\"z-index\", highestZIndex.value + 1)\n\n        updateZIndex(highestZIndex.value + 1)\n      }\n    }\n\n    function getClosestDialog(e: MouseEvent): HTMLElement | null {\n      return (e.target as HTMLElement)?.closest(\".v-dialog.dialog.v-dialog--active\")\n    }\n  },\n})\n</script>\n\n<template>\n  <span>\n    <slot></slot>\n  </span>\n</template>\n\n<style\n    lang=\"scss\"\n>\n.draggable-dialog {\n  .v-card__title {\n    .draggable-indicator {\n      position: absolute;\n      left: 0;\n      top: 0;\n      right: 0;\n      bottom: 0;\n      height: 100%;\n      opacity: 0;\n      display: flex;\n      transition: 0.4s;\n\n      .wrapper {\n        width: 32px;\n        height: 32px;\n        display: flex;\n        background-color: #fff;\n        border: 1px solid var(--v-border-lighten1);\n        border-radius: 19px;\n        align-items: center;\n        justify-content: center;\n        margin: auto;\n\n        svg {\n          color: var(--v-grey);\n          font-size: 16px;\n        }\n      }\n    }\n  }\n\n  .v-card__title:hover {\n    .draggable-indicator {\n      opacity: 1;\n    }\n  }\n}\n\n.grabber {\n  flex-grow: 1;\n  align-items: center;\n  justify-content: center;\n  display: flex;\n  transition: opacity 0.5s linear;\n  opacity: 0;\n  background: var(--v-background-base);\n  position: absolute;\n  width: 100%;\n  margin: auto;\n  left: 0;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  cursor: grab;\n\n  .grabber-inner {\n    width: 100%;\n    height: 100%;\n  }\n}\n</style>","import { render, staticRenderFns } from \"./DraggableDialog.vue?vue&type=template&id=80a92554\"\nimport script from \"./DraggableDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./DraggableDialog.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DraggableDialog.vue?vue&type=style&index=0&id=80a92554&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","<script>\nimport { defineComponent } from \"vue\"\nimport Locale from \"@/modules/utils/locales\"\nimport Util from \"@/modules/utils/util\"\nimport VueHelper from \"@/modules/utils/vuehelper\"\n\nimport {\n  DraggableDialog,\n  PbTooltip,\n} from \"@/components\"\n\nexport default defineComponent({\n  name: \"BaseDialog\",\n\n  components: {\n    DraggableDialog,\n    PbTooltip,\n  },\n\n  inheritAttrs: false,\n\n  props: {\n    helpIsAvailable: {\n      type: Boolean,\n      default: () => false,\n    },\n\n    helpActive: {\n      type: Boolean,\n      default: () => false,\n    },\n    header: String,\n    extraClass: String,\n    maxWidth: {\n      type: String,\n      default: () => \"820px\",\n    },\n    withFooter: {\n      type: Boolean,\n      default: () => false,\n    },\n    isOpen: Boolean,\n\n    draggableEnabled: {\n      type: Boolean,\n      default: () => true,\n    },\n    hideHeader: Boolean,\n\n    persistent: Boolean,\n    noClose: Boolean,\n    noSave: Boolean,\n    saveText: {\n      type: String,\n      default: () => Locale.translate(\"Save\"),\n    },\n    closeText: {\n      type: String,\n      default: () => Locale.translate(\"Close\"),\n    },\n    automaticLoadAtSave: {\n      type: Boolean,\n      default: () => true,\n    },\n\n    showDataView: Boolean,\n    dataViewIsDisabled: Boolean,\n    disableSave: Boolean,\n\n    /** @property withConfirm - open confirm dialog before save is executed */\n    withConfirm: Boolean,\n\n    /**\n     * @property confirmOptions {{ title: String, description: String }}\n     * Set title and description of confirm dialog\n     */\n    confirmOptions: {\n      type: Object,\n      default: () => ({\n        title: \"Are you sure\",\n        description: \"Are you sure you want to do this action?\",\n      }),\n    },\n    disableTooltipText: String,\n    dataTestId: String,\n  },\n\n  data() {\n    return {\n      helpIsActive: false,\n      helpIsExpanded: false,\n      currentlyOpen: this.isOpen,\n      loading: false,\n      x: 0,\n      y: 0,\n      grabbing: false,\n    }\n  },\n\n  computed: {\n    contentClass() {\n      const classes = [\n        \"dialog\",\n        \"z-index-dialog\",\n      ]\n\n      if (this.draggableEnabled) {\n        classes.push(\"draggable-dialog\")\n      }\n\n      let classNames = classes.join(\" \")\n\n      if (Util.isSet(this.extraClass)) {\n        classNames += ` ${this.extraClass}`\n      }\n\n      if (this.grabbing) {\n        classNames += \" grab\"\n      }\n\n      return classNames\n    },\n  },\n\n  watch: {\n    helpIsActive: {\n      handler(val) {\n        this.$emit(\"help\", val)\n      },\n    },\n  },\n\n  methods: {\n    open() {\n      this.currentlyOpen = true\n      this.checkZIndex()\n      this.helpIsActive = this.helpActive\n    },\n\n    close() {\n      this.loading = false\n      this.currentlyOpen = false\n      this.$emit(\"close\")\n    },\n\n    stopLoading() {\n      this.loading = false\n    },\n\n    save() {\n      if (this.withConfirm) {\n        this.openConfirmDialog(this.confirmOptions).then(bool => {\n          if (bool) {\n            this.loading = true\n            this.$emit(\"save\")\n          }\n        })\n      } else {\n        if (this.automaticLoadAtSave) {\n          this.loading = true\n        }\n        else {\n          this.$emit(\"save\")\n        }\n      }\n    },\n\n    openDataView() {\n      this.$emit(\"open-data-view\")\n    },\n\n    clickOutside() {\n      if (!this.persistent) {\n        this.close()\n      }\n    },\n\n    showContextMenu(e) {\n      e.preventDefault()\n      this.showMenu = false\n      this.grabbing = false\n      this.x = e.clientX\n      this.y = e.clientY\n      this.$nextTick(() => {\n        this.showMenu = true\n      })\n    },\n\n    checkZIndex() {\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"draggableDialog\", \"handleZIndex\")\n      // @ts-ignore\n        .then(dialog => dialog.handleZIndex())\n    },\n  },\n})\n</script>\n\n<template>\n  <DraggableDialog\n    :enabled=\"draggableEnabled\"\n    ref=\"draggableDialog\"\n  >\n    <VDialog\n      v-if=\"currentlyOpen\"\n      v-bind=\"$attrs\"\n      :value=\"currentlyOpen\"\n      :max-width=\"maxWidth\"\n      :content-class=\"contentClass\"\n      :class=\"{'pushed-help' : helpIsActive}\"\n      :persistent=\"persistent\"\n      @keydown.esc=\"persistent ? null : close\"\n      @click:outside=\"clickOutside\"\n      no-click-animation\n      scrollable\n    >\n      <VCard\n        :data-test-id=\"dataTestId\"\n        :class=\"{'pushed-help' : helpIsActive}\"\n      >\n        <VCardTitle\n          v-if=\"!hideHeader\"\n          class=\"dialog-header py-0 noselect\"\n        >\n          <div class=\"dialog-header-main py-4\">\n            <div\n              v-if=\"draggableEnabled\"\n              class=\"draggable-indicator\"\n            >\n              <div class=\"wrapper\">\n                <VIcon>fa-solid fa-up-down-left-right</VIcon>\n              </div>\n            </div>\n\n            <div\n              v-if=\"draggableEnabled\"\n              class=\"grabber\"\n            >\n              <div class=\"grabber-inner\">\n              </div>\n            </div>\n\n            <div class=\"header-content\">\n              <span class=\"noselect\">\n                <slot name=\"logo\"></slot>\n              </span>\n              <div class=\"base-dialog-text noselect\">\n                <slot\n                  v-if=\"!!$scopedSlots.header\"\n                  name=\"header\"\n                >\n                </slot>\n                <span\n                  v-else\n                  v-text=\"header\"\n                  class=\"header wrap-text\"\n                >\n                </span>\n                <span class=\"byline\">\n                  <slot name=\"byline\"></slot>\n                </span>\n              </div>\n\n              <VSpacer></VSpacer>\n\n              <div\n                class=\"d-flex gap-2 flex-grow-1 justify-end\"\n                style=\"z-index: 2;\"\n              >\n                <slot name=\"extrabuttons\"></slot>\n\n                <VBtn\n                  v-show=\"showDataView\"\n                  @click=\"openDataView()\"\n                  depressed\n                  class=\"btn-header-square\"\n                >\n                  <VIcon\n                    small\n                    color=\"grey\"\n                  >\n                    fas fa-code\n                  </VIcon>\n                </VBtn>\n\n                <VBtn\n                  v-show=\"!noClose\"\n                  @click=\"close()\"\n                  depressed\n                  color=\"grey--text\"\n                  data-test-id=\"cancel-button\"\n                >\n                  {{ closeText }}\n                </VBtn>\n                <template\n                  v-if=\"isSet(disableTooltipText)\"\n                >\n                  <PbTooltip :text=\"disableTooltipText\">\n                    <template #activator=\"{ on }\">\n                      <VBtn\n                        v-if=\"!noSave\"\n                        :loading=\"loading\"\n                        :disabled=\"disableSave\"\n                        v-on=\"on\"\n                        @click=\"save()\"\n                        depressed\n                        color=\"secondary\"\n                        data-test-id=\"save-button\"\n                      >\n                        {{ saveText }}\n                      </VBtn>\n                    </template>\n                  </PbTooltip>\n                </template>\n                <template v-else>\n                  <slot name=\"savesetting\">\n                  </slot>\n\n                  <VBtn\n                    v-if=\"!noSave\"\n                    :loading=\"loading\"\n                    :disabled=\"disableSave\"\n                    @click=\"save()\"\n                    depressed\n                    color=\"secondary\"\n                    data-test-id=\"save-button\"\n                  >\n                    {{ saveText }}\n                  </VBtn>\n                </template>\n              </div>\n            </div>\n          </div>\n\n          <slot name=\"subheader\"></slot>\n        </VCardTitle>\n\n        <VCardText\n          class=\"dialog-content bg-light-grey pa-0\"\n        >\n          <slot></slot>\n        </VCardText>\n\n        <div\n          v-if=\"withFooter\"\n          class=\"card-footer d-flex justify-end\"\n        >\n          <slot name=\"footerbuttons\">\n          </slot>\n        </div>\n      </VCard>\n\n      <VNavigationDrawer\n        v-model=\"helpIsActive\"\n        :class=\"{ 'help-expanded' : helpIsExpanded, 'd-none': !helpIsExpanded }\"\n        hide-overlay\n        absolute\n        attach\n        right\n        width=\"300\"\n      >\n        <div class=\"help-sidebar-wrapper\">\n          <div class=\"help-header d-flex\">\n            <h3>{{ _(\"Help\") }}</h3>\n            <VSpacer></VSpacer>\n            <VBtn\n              v-show=\"helpIsExpanded\"\n              @click=\"helpIsExpanded = false\"\n              depressed\n              icon\n              class=\"help-cta mr-2\"\n            >\n              <VIcon>\n                fa-solid fa-minimize\n              </VIcon>\n            </VBtn>\n\n            <VBtn\n              v-show=\"!helpIsExpanded\"\n              @click=\"helpIsExpanded = true\"\n              depressed\n              icon\n              class=\"help-cta mr-2\"\n            >\n              <VIcon>\n                fa-solid fa-maximize\n              </VIcon>\n            </VBtn>\n            <VBtn\n              @click=\"helpIsActive = false\"\n              depressed\n              icon\n              class=\"help-cta mr-2\"\n            >\n              <VIcon>fa-solid fa-circle-xmark</VIcon>\n            </VBtn>\n          </div>\n\n          <div class=\"help-inner\">\n            <slot name=\"help\">\n            </slot>\n          </div>\n        </div>\n      </VNavigationDrawer>\n      <VBtn\n        v-if=\"helpIsAvailable && !helpIsActive\"\n        :class=\"{'pushed-help-btn' : helpIsActive}\"\n        @click=\"helpIsActive = !helpIsActive\"\n        depressed\n        class=\"small-icon btn-header-square floating-help\"\n        color=\"grey--text\"\n      >\n        <VIcon>fa-regular fa-circle-question</VIcon>\n      </VBtn>\n    </VDialog>\n  </DraggableDialog>\n</template>\n\n<style\n    scoped\n    lang=\"scss\"\n>\n.header-content {\n  display: flex;\n  align-items: center !important;\n  width: 100%;\n}\n\n.base-dialog-text {\n  line-height: 1.1;\n  align-self: center;\n  width: fit-content;\n\n  .header {\n    display: block;\n    line-height: 1.1;\n    padding-right: 12px;\n\n    .pb-text-field {\n      min-width: min-content;\n    }\n\n    .v-input__slot {\n      padding: 0;\n    }\n\n    fieldset {\n      border: 1px solid #f5f5f9 !important;\n    }\n\n    .v-text-field__slot {\n      font-size: 17px;\n    }\n  }\n\n  .byline {\n    font-size: 15px;\n    font-weight: 400;\n    opacity: 0.67;\n    overflow-wrap: anywhere;\n  }\n}\n</style>","import mod from \"-!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseDialog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BaseDialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./BaseDialog.vue?vue&type=template&id=01412f4c&scoped=true\"\nimport script from \"./BaseDialog.vue?vue&type=script&lang=js\"\nexport * from \"./BaseDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./BaseDialog.vue?vue&type=style&index=0&id=01412f4c&prod&scoped=true&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  \"01412f4c\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('DraggableDialog',{ref:\"draggableDialog\",attrs:{\"enabled\":_vm.draggableEnabled}},[(_vm.currentlyOpen)?_c(VDialog,_vm._b({class:{'pushed-help' : _vm.helpIsActive},attrs:{\"value\":_vm.currentlyOpen,\"max-width\":_vm.maxWidth,\"content-class\":_vm.contentClass,\"persistent\":_vm.persistent,\"no-click-animation\":\"\",\"scrollable\":\"\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;_vm.persistent ? null : _vm.close},\"click:outside\":_vm.clickOutside}},'VDialog',_vm.$attrs,false),[_c(VCard,{class:{'pushed-help' : _vm.helpIsActive},attrs:{\"data-test-id\":_vm.dataTestId}},[(!_vm.hideHeader)?_c(VCardTitle,{staticClass:\"dialog-header py-0 noselect\"},[_c('div',{staticClass:\"dialog-header-main py-4\"},[(_vm.draggableEnabled)?_c('div',{staticClass:\"draggable-indicator\"},[_c('div',{staticClass:\"wrapper\"},[_c(VIcon,[_vm._v(\"fa-solid fa-up-down-left-right\")])],1)]):_vm._e(),_vm._v(\" \"),(_vm.draggableEnabled)?_c('div',{staticClass:\"grabber\"},[_c('div',{staticClass:\"grabber-inner\"})]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"header-content\"},[_c('span',{staticClass:\"noselect\"},[_vm._t(\"logo\")],2),_vm._v(\" \"),_c('div',{staticClass:\"base-dialog-text noselect\"},[(!!_vm.$scopedSlots.header)?_vm._t(\"header\"):_c('span',{staticClass:\"header wrap-text\",domProps:{\"textContent\":_vm._s(_vm.header)}}),_vm._v(\" \"),_c('span',{staticClass:\"byline\"},[_vm._t(\"byline\")],2)],2),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('div',{staticClass:\"d-flex gap-2 flex-grow-1 justify-end\",staticStyle:{\"z-index\":\"2\"}},[_vm._t(\"extrabuttons\"),_vm._v(\" \"),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showDataView),expression:\"showDataView\"}],staticClass:\"btn-header-square\",attrs:{\"depressed\":\"\"},on:{\"click\":function($event){return _vm.openDataView()}}},[_c(VIcon,{attrs:{\"small\":\"\",\"color\":\"grey\"}},[_vm._v(\"\\n                  fas fa-code\\n                \")])],1),_vm._v(\" \"),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.noClose),expression:\"!noClose\"}],attrs:{\"depressed\":\"\",\"color\":\"grey--text\",\"data-test-id\":\"cancel-button\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"\\n                \"+_vm._s(_vm.closeText)+\"\\n              \")]),_vm._v(\" \"),(_vm.isSet(_vm.disableTooltipText))?[_c('PbTooltip',{attrs:{\"text\":_vm.disableTooltipText},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [(!_vm.noSave)?_c(VBtn,_vm._g({attrs:{\"loading\":_vm.loading,\"disabled\":_vm.disableSave,\"depressed\":\"\",\"color\":\"secondary\",\"data-test-id\":\"save-button\"},on:{\"click\":function($event){return _vm.save()}}},on),[_vm._v(\"\\n                      \"+_vm._s(_vm.saveText)+\"\\n                    \")]):_vm._e()]}}],null,false,196835087)})]:[_vm._t(\"savesetting\"),_vm._v(\" \"),(!_vm.noSave)?_c(VBtn,{attrs:{\"loading\":_vm.loading,\"disabled\":_vm.disableSave,\"depressed\":\"\",\"color\":\"secondary\",\"data-test-id\":\"save-button\"},on:{\"click\":function($event){return _vm.save()}}},[_vm._v(\"\\n                  \"+_vm._s(_vm.saveText)+\"\\n                \")]):_vm._e()]],2)],1)]),_vm._v(\" \"),_vm._t(\"subheader\")],2):_vm._e(),_vm._v(\" \"),_c(VCardText,{staticClass:\"dialog-content bg-light-grey pa-0\"},[_vm._t(\"default\")],2),_vm._v(\" \"),(_vm.withFooter)?_c('div',{staticClass:\"card-footer d-flex justify-end\"},[_vm._t(\"footerbuttons\")],2):_vm._e()],1),_vm._v(\" \"),_c(VNavigationDrawer,{class:{ 'help-expanded' : _vm.helpIsExpanded, 'd-none': !_vm.helpIsExpanded },attrs:{\"hide-overlay\":\"\",\"absolute\":\"\",\"attach\":\"\",\"right\":\"\",\"width\":\"300\"},model:{value:(_vm.helpIsActive),callback:function ($$v) {_vm.helpIsActive=$$v},expression:\"helpIsActive\"}},[_c('div',{staticClass:\"help-sidebar-wrapper\"},[_c('div',{staticClass:\"help-header d-flex\"},[_c('h3',[_vm._v(_vm._s(_vm._(\"Help\")))]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.helpIsExpanded),expression:\"helpIsExpanded\"}],staticClass:\"help-cta mr-2\",attrs:{\"depressed\":\"\",\"icon\":\"\"},on:{\"click\":function($event){_vm.helpIsExpanded = false}}},[_c(VIcon,[_vm._v(\"\\n              fa-solid fa-minimize\\n            \")])],1),_vm._v(\" \"),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.helpIsExpanded),expression:\"!helpIsExpanded\"}],staticClass:\"help-cta mr-2\",attrs:{\"depressed\":\"\",\"icon\":\"\"},on:{\"click\":function($event){_vm.helpIsExpanded = true}}},[_c(VIcon,[_vm._v(\"\\n              fa-solid fa-maximize\\n            \")])],1),_vm._v(\" \"),_c(VBtn,{staticClass:\"help-cta mr-2\",attrs:{\"depressed\":\"\",\"icon\":\"\"},on:{\"click\":function($event){_vm.helpIsActive = false}}},[_c(VIcon,[_vm._v(\"fa-solid fa-circle-xmark\")])],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"help-inner\"},[_vm._t(\"help\")],2)])]),_vm._v(\" \"),(_vm.helpIsAvailable && !_vm.helpIsActive)?_c(VBtn,{staticClass:\"small-icon btn-header-square floating-help\",class:{'pushed-help-btn' : _vm.helpIsActive},attrs:{\"depressed\":\"\",\"color\":\"grey--text\"},on:{\"click\":function($event){_vm.helpIsActive = !_vm.helpIsActive}}},[_c(VIcon,[_vm._v(\"fa-regular fa-circle-question\")])],1):_vm._e()],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport $ from \"jquery\"\nimport { defineComponent } from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\n\nexport default defineComponent({\n  name: \"CopyToClipboardButton\",\n\n  inheritAttrs: false,\n\n  props: {\n    payload: null,\n\n    text: String,\n    customClass: String,\n  },\n\n  data() {\n    return {\n      id: Util.getUniqueId(),\n    }\n  },\n\n  computed: {\n    classes() {\n      const defaultClass = \"clipboard-btn ml-1\"\n      if (Util.isSet(this.customClass)) return `${defaultClass} ${this.customClass}`\n\n      return defaultClass\n    },\n  },\n\n  methods: {\n    copyToClipboard(payload: string) {\n      if (typeof payload === \"string\" && payload.includes(\"{\") ||\n          typeof payload === \"object\") {\n        $(\"#copyToClipboard\" + this.id).val(JSON.stringify(payload, null, 2))\n      } else {\n        $(\"#copyToClipboard\" + this.id).val(payload)\n      }\n\n      $(\"#copyToClipboard\" + this.id).select()\n      document.execCommand(\"copy\")\n      // @ts-ignore mixin\n      this.openSuccessDialog()\n    },\n\n    isSet(val: any): boolean {\n      return Util.isSet(val)\n    },\n  },\n})\n</script>\n\n<template>\n  <div>\n    <VBtn\n      v-bind=\"$attrs\"\n      :class=\"classes\"\n      @click=\"copyToClipboard(payload)\"\n      depressed\n    >\n      <VIcon>far fa-copy</VIcon>\n      <span v-if=\"isSet(text)\">\n        {{ text }}\n      </span>\n    </VBtn>\n\n    <!-- Hidden input field that is placed outside of screen -->\n    <input\n      :id=\"'copyToClipboard' + id\"\n      type=\"text\"\n      style=\"position: absolute; top: -1000%\"\n    >\n  </div>\n</template>\n\n<style\n    scoped\n    lang=\"scss\"\n>\n.clipboard-btn {\n  border: 1px solid var(--v-border-base);\n  border-radius: 3px;\n  background-color: white !important;\n  padding: 6px !important;\n  max-height: 24px !important;\n  min-width: auto !important;\n  min-height: auto !important;\n  height: auto !important;\n\n  .v-btn__content {\n    span {\n      font-size: 13px;\n      margin-left: 6px;\n      color: var(--v-primary-base) !important;\n      letter-spacing: 0.3px;\n      text-transform: none;\n    }\n  }\n\n  svg {\n    font-size: 15px !important;\n    color: var(--v-primary-base) !important;\n  }\n}\n\n.clipboard-btn.large-absolute {\n  position: absolute;\n  top: 10px;\n  right: 26px;\n  max-height: 32px !important;\n  width: 32px !important;\n\n  svg {\n    width: 16px !important;\n  }\n}\n</style>","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyToClipboardButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CopyToClipboardButton.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CopyToClipboardButton.vue?vue&type=template&id=5b102c5a&scoped=true\"\nimport script from \"./CopyToClipboardButton.vue?vue&type=script&lang=ts\"\nexport * from \"./CopyToClipboardButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CopyToClipboardButton.vue?vue&type=style&index=0&id=5b102c5a&prod&scoped=true&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  \"5b102c5a\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(VBtn,_vm._b({class:_vm.classes,attrs:{\"depressed\":\"\"},on:{\"click\":function($event){return _vm.copyToClipboard(_vm.payload)}}},'VBtn',_vm.$attrs,false),[_c(VIcon,[_vm._v(\"far fa-copy\")]),_vm._v(\" \"),(_vm.isSet(_vm.text))?_c('span',[_vm._v(\"\\n      \"+_vm._s(_vm.text)+\"\\n    \")]):_vm._e()],1),_vm._v(\" \"),_c('input',{staticStyle:{\"position\":\"absolute\",\"top\":\"-1000%\"},attrs:{\"id\":'copyToClipboard' + _vm.id,\"type\":\"text\"}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nexport default defineComponent({\n  name: \"InputLabel\",\n\n  props: {\n    label: String,\n  },\n})\n</script>\n\n<template>\n  <div class=\"d-flex flex-col\">\n    <span class=\"title-label\">{{ label }}</span>\n    <span>\n      <slot></slot>\n    </span>\n  </div>\n</template>\n\n<style\n    scoped\n    lang=\"scss\"\n>\n\n</style>","import mod from \"-!../../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputLabel.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InputLabel.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./InputLabel.vue?vue&type=template&id=032834ec&scoped=true\"\nimport script from \"./InputLabel.vue?vue&type=script&lang=ts\"\nexport * from \"./InputLabel.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  \"032834ec\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-flex flex-col\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(_vm._s(_vm.label))]),_vm._v(\" \"),_c('span',[_vm._t(\"default\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport {\n  defineComponent,\n  PropType,\n  ref,\n  getCurrentInstance,\n  computed,\n  onMounted,\n} from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\nimport Locale from \"@/modules/utils/locales\"\nimport { DefaultValidators } from \"@/modules/utils/validators\"\n\nimport {\n  BaseDialog,\n  InputLabelEditCustomData,\n  JsonViewer,\n} from \"@/components\"\n\nimport { JsonData } from \"@/types\"\n\nenum EditCustomDataModes {\n  /* eslint-disable no-unused-vars */\n  Edit = \"edit\",\n  Delete = \"delete\",\n  Create = \"create\"\n  /* eslint-enable no-unused-vars */\n}\n\ntype EditCustomData = {\n  moduleId: string | null,\n  key: string | null,\n  value: JsonData,\n  type: CustomDataTypes,\n  mode: EditCustomDataModes,\n}\n\nenum CustomDataTypes {\n  /* eslint-disable no-unused-vars */\n  String = \"string\",\n  Integer = \"integer\",\n  Decimal = \"decimal\",\n  Boolean = \"boolean\",\n  JSON = \"json\",\n  /* eslint-enable no-unused-vars */\n}\n\nexport default defineComponent({\n  name: \"EditCustomData\",\n\n  components: {\n    BaseDialog,\n    InputLabelEditCustomData,\n    JsonViewer,\n  },\n\n  props: {\n    customData: Object as PropType<any>,\n\n    isCreate: Boolean,\n  },\n\n  setup(props, { emit }) {\n    const vm = getCurrentInstance()!.proxy\n\n    const { customData: current } = props\n\n    const dialogRef = ref<any>(null)\n    const copy = ref<any>(current)\n    const oldKey = ref<string | null>(null)\n    const activeCustomData = ref<EditCustomData>({\n      key: null,\n      type: CustomDataTypes.String,\n      moduleId: null,\n      value: null,\n      mode: EditCustomDataModes.Create,\n    })\n    const availableCustomDataTypes: {\n      text: string,\n      value: CustomDataTypes,\n    }[] = [\n      {\n        text: \"Boolean\",\n        value: CustomDataTypes.Boolean,\n      },\n      {\n        text: \"String\",\n        value: CustomDataTypes.String,\n      },\n      {\n        text: \"Integer\",\n        value: CustomDataTypes.Integer,\n      },\n      {\n        text: \"Decimal\",\n        value: CustomDataTypes.Decimal,\n      },\n      {\n        text: \"JSON\",\n        value: CustomDataTypes.JSON,\n      },\n    ]\n\n    onMounted(() => {\n      dialogRef.value = vm.$refs.baseDialog\n    })\n\n    function deleteCustomData(key: string) {\n      const { isCreate } = props\n\n      if (isCreate) {\n        delete copy.value?.[key]\n      }\n      else {\n        activeCustomData.value = {\n          key: copy.value?.[key]?.key,\n          type: (copy.value?.[key]?.type as CustomDataTypes),\n          moduleId: copy.value?.[key]?.moduleId,\n          value: copy.value?.[key]?.value,\n          mode: EditCustomDataModes.Delete,\n        }\n        saveCustomData()\n      }\n    }\n\n    function editCustomData(key: string) {\n      oldKey.value = key\n      activeCustomData.value = {\n        key: copy.value?.[key]?.key,\n        type: (copy.value?.[key]?.type as CustomDataTypes),\n        moduleId: copy.value?.[key]?.moduleId,\n        value: copy.value?.[key]?.value,\n        mode: EditCustomDataModes.Edit,\n      }\n\n      if (activeCustomData.value.type === CustomDataTypes.JSON) {\n        activeCustomData.value.value = JSON.stringify(activeCustomData.value.value)\n      }\n\n      if (dialogRef.value) {\n        dialogRef.value?.open()\n      }\n    }\n\n    function createCustomData() {\n      activeCustomData.value = {\n        key: null,\n        type: CustomDataTypes.String,\n        moduleId: null,\n        value: null,\n        mode: EditCustomDataModes.Create,\n      }\n\n      if (dialogRef.value) {\n        dialogRef.value?.open()\n      }\n    }\n\n    function saveCustomData() {\n      const newlyCreated = activeCustomData.value\n\n      if (newlyCreated) {\n        if (newlyCreated.type === CustomDataTypes.JSON) {\n          saveAsJson((newlyCreated.value as string))\n        }\n\n        const newKey = `|${newlyCreated.moduleId}|${newlyCreated.key}`\n        if (newlyCreated.mode === EditCustomDataModes.Delete) {\n          const newCustomData = {\n            ...(copy.value || {}),\n            [newKey]: null,\n          }\n          copy.value = newCustomData\n          emit(\"change\", copy.value)\n        }\n        else {\n          const newCustomData = {\n            ...(copy.value || {}),\n            [newKey]: {\n              moduleId: newlyCreated.moduleId,\n              key: newlyCreated.key,\n              value: newlyCreated.value,\n              type: newlyCreated.type,\n            },\n          }\n          copy.value = newCustomData\n          emit(\"change\", copy.value)\n\n          if (oldKey.value && oldKey.value !== newKey) {\n            deleteCustomData(oldKey.value)\n            oldKey.value = null\n          }\n        }\n\n        if (dialogRef.value) {\n          dialogRef.value.stopLoading()\n          dialogRef.value.close()\n        }\n      }\n    }\n\n    function objectKeys(obj: any) {\n      return Object.keys(obj || {})\n        .filter(key => Util.isSet(obj?.[key]))\n    }\n\n    function getValue(key: string): any {\n      return copy.value?.[key]?.value\n    }\n\n    const customDataIsSet = computed(() => {\n      return objectKeys(copy.value).length > 0\n    })\n\n    const getContents = (json: JsonData): string | null | undefined => {\n      if (typeof (json) === \"string\") return json\n      else if (typeof (json) === \"object\" && Util.isSet(json)) return JSON.stringify(json)\n      else if (Util.isSet(json)) return String(json)\n      return json\n    }\n\n    const activeCustomDataIsValid = computed(() => {\n      const validateJSON = (): boolean => {\n        try {\n          const contents = getContents(activeCustomData.value.value)\n\n          if (contents) {\n            JSON.parse(contents)\n            return true\n          }\n          else {\n            return true\n          }\n        } catch {\n          return false\n        }\n      }\n\n      const checks = [\n        Util.isSet(activeCustomData.value.moduleId),\n        Util.isSet(activeCustomData.value.key),\n        activeCustomData.value.type === CustomDataTypes.JSON ? validateJSON() : true,\n      ]\n\n      return checks.every(c => c)\n    })\n\n    function saveAsJson(json: string): void {\n      try {\n        JSON.parse(json)\n        activeCustomData.value.value = JSON.parse(json)\n      }\n      catch {\n        activeCustomData.value.value = json\n      }\n    }\n\n    return {\n      // States\n      activeCustomData,\n      copy,\n\n      // Computed\n      customDataIsSet,\n      activeCustomDataIsValid,\n\n      // Methods\n      objectKeys,\n      getValue,\n      createCustomData,\n      editCustomData,\n      deleteCustomData,\n      saveCustomData,\n      getContents,\n\n      // Types\n      CustomDataTypes,\n      EditCustomDataModes,\n      availableCustomDataTypes,\n\n      // Helpers\n      translate: Locale.translate,\n      DefaultValidators,\n    }\n  },\n})\n</script>\n\n<template>\n  <VCard\n    flat\n    class=\"custom-data-card\"\n  >\n    <div class=\"card-header\">\n      <span class=\"title-label\">\n        {{ translate('Custom_data') }}\n      </span>\n      <VSpacer></VSpacer>\n      <VBtn\n        @click=\"createCustomData\"\n        text\n        class=\"primary--text\"\n      >\n        {{ translate('Add_field') }}\n      </VBtn>\n    </div>\n\n    <div class=\"card-content\">\n      <div\n        v-if=\"!customDataIsSet\"\n        class=\"no-data\"\n      >\n        {{ translate('No_custom_data') }}\n      </div>\n\n      <div\n        v-if=\"customDataIsSet\"\n        class=\"custom-data-row\"\n      >\n        <table v-if=\"copy\">\n          <tr>\n            <th class=\"table-header min-width-150\">\n              {{ translate(\"Module_id\") }}\n            </th>\n            <th class=\"table-header\">\n              {{ translate(\"Key\") }}\n            </th>\n            <th class=\"table-header\">\n              {{ translate(\"Value\") }}\n            </th>\n            <th></th>\n          </tr>\n\n          <tr\n            v-for=\"(key, index) in objectKeys(copy)\"\n            :key=\"String(index) + '_cust_data'\"\n          >\n            <td>\n              <span v-if=\"copy[key]\">\n                {{ copy[key]?.moduleId }}\n              </span>\n            </td>\n            <td>\n              <span v-if=\"copy[key]\">\n                {{ copy[key]?.key }}\n              </span>\n            </td>\n            <td>\n              <span v-if=\"copy[key]?.type === CustomDataTypes.JSON\">\n                <JsonViewer\n                  :json=\"copy[key]?.value\"\n                  :expanded-on-start=\"(getContents(copy[key]?.value) || '')?.length < 100\"\n                  no-actions\n                  readonly\n                ></JsonViewer>\n              </span>\n              <span v-else-if=\"copy[key]\">\n                {{ copy[key]?.value }}\n              </span>\n            </td>\n            <td>\n              <div class=\"action-buttons\">\n                <VBtn @click=\"editCustomData(key)\">\n                  <FontAwesomeIcon\n                    small\n                    icon=\"fa-solid fa-pencil\"\n                  >\n                  </FontAwesomeIcon>\n                </VBtn>\n                <VBtn @click=\"deleteCustomData(key)\">\n                  <FontAwesomeIcon\n                    small\n                    icon=\"fa-solid fa-trash-can\"\n                  >\n                  </FontAwesomeIcon>\n                </VBtn>\n              </div>\n            </td>\n          </tr>\n        </table>\n      </div>\n    </div>\n\n    <BaseDialog\n      :disable-save=\"!activeCustomDataIsValid\"\n      :header=\"translate('Custom_data')\"\n      :automatic-load-at-save=\"false\"\n      :max-width=\"activeCustomData.type === CustomDataTypes.JSON ? '80vw' : '880'\"\n      @save=\"saveCustomData\"\n      persistent\n      ref=\"baseDialog\"\n    >\n      <VCard\n        v-if=\"activeCustomData\"\n        flat\n        class=\"pa-4 border-light\"\n      >\n        <div class=\"d-flex gap-2\">\n          <VForm>\n            <div class=\"d-flex gap-3\">\n              <InputLabelEditCustomData\n                :label=\"translate('Module_id')\"\n              >\n                <VTextField\n                  :value=\"activeCustomData.moduleId\"\n                  :rules=\"[DefaultValidators.required]\"\n                  @input=\"activeCustomData.moduleId = $event\"\n                  required\n                  outlined\n                  dense\n                >\n                </VTextField>\n              </InputLabelEditCustomData>\n\n              <InputLabelEditCustomData\n                :label=\"translate('Key')\"\n              >\n                <VTextField\n                  :value=\"activeCustomData.key\"\n                  :rules=\"[DefaultValidators.required]\"\n                  @input=\"activeCustomData.key = $event\"\n                  required\n                  outlined\n                  dense\n                >\n                </VTextField>\n              </InputLabelEditCustomData>\n\n              <InputLabelEditCustomData\n                :label=\"translate('Type')\"\n              >\n                <VSelect\n                  :value=\"activeCustomData.type\"\n                  :items=\"availableCustomDataTypes\"\n                  @change=\"activeCustomData.type = $event\"\n                  required\n                  outlined\n                  dense\n                >\n                </VSelect>\n              </InputLabelEditCustomData>\n\n              <InputLabelEditCustomData\n                v-if=\"activeCustomData.type !== CustomDataTypes.JSON\"\n                :label=\"translate('Value')\"\n              >\n                <VTextField\n                  v-if=\"activeCustomData.type !== CustomDataTypes.Boolean\"\n                  :value=\"activeCustomData.value\"\n                  :rules=\"[DefaultValidators.required]\"\n                  @input=\"activeCustomData.value = $event\"\n                  required\n                  outlined\n                  dense\n                >\n                </VTextField>\n\n                <VCheckbox\n                  v-else\n                  :input-value=\"activeCustomData.value\"\n                  :value=\"activeCustomData.value\"\n                  :true-value=\"true\"\n                  :false-value=\"false\"\n                  @change=\"activeCustomData.value = $event\"\n                  dense\n                >\n                </VCheckbox>\n              </InputLabelEditCustomData>\n            </div>\n            <div\n              v-if=\"activeCustomData.type === CustomDataTypes.JSON\"\n              class=\"d-flex\"\n            >\n              <JsonViewer\n                :json=\"activeCustomData.value || {}\"\n                @change=\"activeCustomData.value = $event\"\n                is-editable\n                expanded-on-start\n              >\n              </JsonViewer>\n            </div>\n          </VForm>\n        </div>\n      </VCard>\n    </BaseDialog>\n  </VCard>\n</template>\n\n<style\n    scoped\n    lang=\"scss\"\n>\n\n.v-form {\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  width: 100%;\n}\n\n.custom-data-card {\n  border: 1px solid var(--v-border-base) !important;\n  width: 100%;\n  max-width: 800px;\n\n  .card-header {\n    display: flex;\n    padding: 4px 16px;\n    border-bottom: 1px solid var(--v-border-base);\n    align-items: center;\n\n    .v-btn {\n      padding: 0;\n      font-weight: 600;\n      letter-spacing: 0;\n    }\n\n    .title-label {\n      font-weight: 500;\n    }\n  }\n\n  .card-content {\n    padding: 10px;\n\n    .no-data {\n      text-align: center;\n      font-size: 15px;\n      color: 1px solid var(--v-byline-base);\n    }\n\n    .custom-data-row {\n      display: flex;\n      align-items: center;\n      border: 1px solid var(--v-border-base);\n\n      table {\n        border-collapse: collapse;\n\n        th {\n          font-weight: 500;\n          background-color: var(--v-backgroundLight-base);\n          border-bottom: 1px solid var(--v-border-base);\n          font-size: 12px;\n        }\n\n        th, td {\n          padding: 2px 5px;\n        }\n      }\n    }\n\n    .action-buttons {\n      margin-left: 10px;\n      display: flex;\n      gap: 4px;\n\n      .v-btn {\n        min-width: auto;\n        height: auto;\n        padding: 5px;\n        border-radius: 8px;\n        box-shadow: none;\n        background: transparent;\n\n        svg {\n          opacity: 0.5;\n        }\n      }\n    }\n  }\n}\n\n.table-header {\n  text-align: start;\n  width: 200px;\n}\n\n</style>","import mod from \"-!../../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditCustomData.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./EditCustomData.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./EditCustomData.vue?vue&type=template&id=1e03431f&scoped=true\"\nimport script from \"./EditCustomData.vue?vue&type=script&lang=ts\"\nexport * from \"./EditCustomData.vue?vue&type=script&lang=ts\"\nimport style0 from \"./EditCustomData.vue?vue&type=style&index=0&id=1e03431f&prod&scoped=true&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  \"1e03431f\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VCard,{staticClass:\"custom-data-card\",attrs:{\"flat\":\"\"}},[_c('div',{staticClass:\"card-header\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n      \"+_vm._s(_vm.translate('Custom_data'))+\"\\n    \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c(VBtn,{staticClass:\"primary--text\",attrs:{\"text\":\"\"},on:{\"click\":_vm.createCustomData}},[_vm._v(\"\\n      \"+_vm._s(_vm.translate('Add_field'))+\"\\n    \")])],1),_vm._v(\" \"),_c('div',{staticClass:\"card-content\"},[(!_vm.customDataIsSet)?_c('div',{staticClass:\"no-data\"},[_vm._v(\"\\n      \"+_vm._s(_vm.translate('No_custom_data'))+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.customDataIsSet)?_c('div',{staticClass:\"custom-data-row\"},[(_vm.copy)?_c('table',[_c('tr',[_c('th',{staticClass:\"table-header min-width-150\"},[_vm._v(\"\\n            \"+_vm._s(_vm.translate(\"Module_id\"))+\"\\n          \")]),_vm._v(\" \"),_c('th',{staticClass:\"table-header\"},[_vm._v(\"\\n            \"+_vm._s(_vm.translate(\"Key\"))+\"\\n          \")]),_vm._v(\" \"),_c('th',{staticClass:\"table-header\"},[_vm._v(\"\\n            \"+_vm._s(_vm.translate(\"Value\"))+\"\\n          \")]),_vm._v(\" \"),_c('th')]),_vm._v(\" \"),_vm._l((_vm.objectKeys(_vm.copy)),function(key,index){return _c('tr',{key:String(index) + '_cust_data'},[_c('td',[(_vm.copy[key])?_c('span',[_vm._v(\"\\n              \"+_vm._s(_vm.copy[key]?.moduleId)+\"\\n            \")]):_vm._e()]),_vm._v(\" \"),_c('td',[(_vm.copy[key])?_c('span',[_vm._v(\"\\n              \"+_vm._s(_vm.copy[key]?.key)+\"\\n            \")]):_vm._e()]),_vm._v(\" \"),_c('td',[(_vm.copy[key]?.type === _vm.CustomDataTypes.JSON)?_c('span',[_c('JsonViewer',{attrs:{\"json\":_vm.copy[key]?.value,\"expanded-on-start\":(_vm.getContents(_vm.copy[key]?.value) || '')?.length < 100,\"no-actions\":\"\",\"readonly\":\"\"}})],1):(_vm.copy[key])?_c('span',[_vm._v(\"\\n              \"+_vm._s(_vm.copy[key]?.value)+\"\\n            \")]):_vm._e()]),_vm._v(\" \"),_c('td',[_c('div',{staticClass:\"action-buttons\"},[_c(VBtn,{on:{\"click\":function($event){return _vm.editCustomData(key)}}},[_c('FontAwesomeIcon',{attrs:{\"small\":\"\",\"icon\":\"fa-solid fa-pencil\"}})],1),_vm._v(\" \"),_c(VBtn,{on:{\"click\":function($event){return _vm.deleteCustomData(key)}}},[_c('FontAwesomeIcon',{attrs:{\"small\":\"\",\"icon\":\"fa-solid fa-trash-can\"}})],1)],1)])])})],2):_vm._e()]):_vm._e()]),_vm._v(\" \"),_c('BaseDialog',{ref:\"baseDialog\",attrs:{\"disable-save\":!_vm.activeCustomDataIsValid,\"header\":_vm.translate('Custom_data'),\"automatic-load-at-save\":false,\"max-width\":_vm.activeCustomData.type === _vm.CustomDataTypes.JSON ? '80vw' : '880',\"persistent\":\"\"},on:{\"save\":_vm.saveCustomData}},[(_vm.activeCustomData)?_c(VCard,{staticClass:\"pa-4 border-light\",attrs:{\"flat\":\"\"}},[_c('div',{staticClass:\"d-flex gap-2\"},[_c(VForm,[_c('div',{staticClass:\"d-flex gap-3\"},[_c('InputLabelEditCustomData',{attrs:{\"label\":_vm.translate('Module_id')}},[_c(VTextField,{attrs:{\"value\":_vm.activeCustomData.moduleId,\"rules\":[_vm.DefaultValidators.required],\"required\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"input\":function($event){_vm.activeCustomData.moduleId = $event}}})],1),_vm._v(\" \"),_c('InputLabelEditCustomData',{attrs:{\"label\":_vm.translate('Key')}},[_c(VTextField,{attrs:{\"value\":_vm.activeCustomData.key,\"rules\":[_vm.DefaultValidators.required],\"required\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"input\":function($event){_vm.activeCustomData.key = $event}}})],1),_vm._v(\" \"),_c('InputLabelEditCustomData',{attrs:{\"label\":_vm.translate('Type')}},[_c(VSelect,{attrs:{\"value\":_vm.activeCustomData.type,\"items\":_vm.availableCustomDataTypes,\"required\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"change\":function($event){_vm.activeCustomData.type = $event}}})],1),_vm._v(\" \"),(_vm.activeCustomData.type !== _vm.CustomDataTypes.JSON)?_c('InputLabelEditCustomData',{attrs:{\"label\":_vm.translate('Value')}},[(_vm.activeCustomData.type !== _vm.CustomDataTypes.Boolean)?_c(VTextField,{attrs:{\"value\":_vm.activeCustomData.value,\"rules\":[_vm.DefaultValidators.required],\"required\":\"\",\"outlined\":\"\",\"dense\":\"\"},on:{\"input\":function($event){_vm.activeCustomData.value = $event}}}):_c(VCheckbox,{attrs:{\"input-value\":_vm.activeCustomData.value,\"value\":_vm.activeCustomData.value,\"true-value\":true,\"false-value\":false,\"dense\":\"\"},on:{\"change\":function($event){_vm.activeCustomData.value = $event}}})],1):_vm._e()],1),_vm._v(\" \"),(_vm.activeCustomData.type === _vm.CustomDataTypes.JSON)?_c('div',{staticClass:\"d-flex\"},[_c('JsonViewer',{attrs:{\"json\":_vm.activeCustomData.value || {},\"is-editable\":\"\",\"expanded-on-start\":\"\"},on:{\"change\":function($event){_vm.activeCustomData.value = $event}}})],1):_vm._e()])],1)]):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import VueHelper from \"@/modules/utils/vuehelper\"\n\nconst BaseDialogMixin = {\n  methods: {\n    openBaseDialog() {\n      return VueHelper.waitForRender(this, \"baseDialog\")\n        // @ts-ignore\n        .then(dialog => dialog.open())\n    },\n\n    closeBaseDialog() {\n      return VueHelper.waitForRender(this, \"baseDialog\", \"close\")\n        // @ts-ignore\n        .then(dialog => dialog.close())\n    },\n\n    openDataView(item) {\n      return VueHelper.waitForRender(this, \"dataViewDialog\")\n        // @ts-ignore\n        .then(dialog => dialog.open(item))\n    },\n\n    startLoading() {\n      return VueHelper.waitForRender(this, \"baseDialog\", \"startLoading\")\n        // @ts-ignore\n        .then(dialog => dialog.startLoading())\n    },\n\n    stopLoading() {\n      return VueHelper.waitForRender(this, \"baseDialog\", \"stopLoading\")\n        // @ts-ignore\n        .then(dialog => dialog.stopLoading())\n    },\n  },\n}\n\nexport default BaseDialogMixin","<script>\nimport { defineComponent } from \"vue\"\n\nimport BaseDialogMixin from \"@/mixins/basedialogmixin\"\nimport ControlMixin from \"@/mixins/controlmixin\"\n\nimport Util from \"@/modules/utils/util\"\n\nimport {\n  BaseDialog,\n  CopyToClipboardBtn,\n  JsonViewer,\n} from \"@/components\"\n\nexport default defineComponent({\n  name: \"DataViewDialog\",\n\n  components: {\n    BaseDialog,\n    CopyToClipboardBtn,\n    JsonViewer,\n  },\n\n  filters: {\n    /* A helper to transform a json key in camelCase to a readable PascalCase name */\n    capitalizeAndSplitWords(val) {\n      if (val) {\n        const splittedUppercaseWords = val.split(/(?=[A-Z])/)\n        return splittedUppercaseWords\n          .map(word => {\n            if (!!word && word.length > 0) {\n              return word[0].toUpperCase() + word.slice(1).toLowerCase()\n            }\n            return word\n          })\n          .join(\" \")\n      }\n    },\n  },\n\n  mixins: [\n    BaseDialogMixin,\n    ControlMixin,\n  ],\n\n  props: {\n    onlyCustomData: Boolean,\n\n    hideCustomData: Boolean,\n\n    draggableEnabled: {\n      type: Boolean,\n      default: () => false,\n    },\n\n    attach: {\n      type: Boolean,\n      default: () => true,\n    },\n\n    overrideMaxWidth: String,\n    noSave: Boolean,\n    disableSave: Boolean,\n    automaticLoadAtSave: Boolean,\n  },\n\n  data() {\n    return {\n      items: null,\n      data: {},\n      type: null,\n      timeout: 2000,\n      activeIndex: 0,\n      maxWidth: \"1100px\",\n\n      openJsonPanels: [],\n    }\n  },\n\n  computed: {\n    activeItem() {\n      return this.items?.[this.activeIndex]\n    },\n\n    activeItemCustomData() {\n      const id = this.getId(this.items?.[this.activeIndex])\n\n      if (id) {\n        return this.data?.[id]\n      }\n      else return null\n    },\n  },\n\n  methods: {\n    async open(payload, currentId) {\n      // Should work for both item and items\n      const items = Array.isArray(payload) ? payload : [ payload ]\n      this.items = items\n\n      if (Util.isSet(currentId) && Util.isSet(this.items)) {\n        this.activeIndex = this.items\n          .findIndex(({ localId }) => localId === currentId)\n      }\n      else {\n        this.activeIndex = 0\n      }\n\n      items.forEach(item => {\n        const copy = Util.deepClone(item)\n\n        this.findAllCustomData(copy)\n      })\n\n      if (this.hideCustomData) {\n        if (Util.isNonEmptyArray(this.items) && this.items.length === 1) {\n          this.openJsonPanels = [ 0 ]\n        }\n      }\n\n      await this.openBaseDialog()\n    },\n\n    getId(item) {\n      return item?.localId || item?.id\n    },\n\n    findAllCustomData(item) {\n      const map = this.data\n\n      /* Helper to iterate through the whole item to find all customData objects. */\n      const recursiveHelper = (obj, parentPath = this.getId(item)) => {\n        Object.entries(obj).forEach((entry) => {\n          if (!Util.isObject(obj) && !Array.isArray(obj)) return\n\n          const [ key, value ] = entry\n          obj.visited = true\n\n          // If custom data, save if non-empty\n          if (key === \"customData\" && value && Object.values(value).length > 0) {\n            // Delete the visited helper of the item we save so that it is pure\n            const copy = Util.deepClone(value)\n            delete copy[\"visited\"]\n\n            map[parentPath] = copy\n          }\n          if (Array.isArray(value)) {\n            const unvisited = value.filter((o) => Util.isObject(o) && !o.visited)\n            unvisited.forEach((o) => {\n              // key as title or key (localId: xxx) if exists\n              const key1 = o.localId ? `${key} (localId: ${o.localId})` : key\n              recursiveHelper(o, key1)\n            })\n          }\n          if (Util.notEmptyObject(value) && !value.visited)\n            recursiveHelper(value, key)\n        })\n      }\n      recursiveHelper(item)\n\n      /* Go through all customData objects and replace a stringified JSON to a parsed JSON */\n      Object.keys(map).forEach((key) => {\n        Object.keys(map[key]).forEach((childKey) => {\n          const value = map[key][childKey]?.value\n\n          if (typeof value === \"string\" && value.slice(0, 2).includes(\"{\")) {\n            try {\n              map[key][childKey].value = JSON.parse(map[key][childKey].value)\n            } catch {\n              // Bad JSON, just skip parsing and keep it as a string\n            }\n          }\n        })\n      })\n\n      this.data = map\n    },\n\n    syntaxHighlight(json) {\n      if (!Util.isSet(json)) return null\n\n      if (typeof json !== \"string\") {\n        // If it is a JSON object, replace with the stringified version pretty-printed\n        json = JSON.stringify(json, undefined, 2)\n      }\n      // Replace &, <, > with HTML character reference\n      json = json\n        .replace(/&/g, \"&amp\")\n        .replace(/</g, \"&lt\")\n        .replace(/>/g, \"&gt\")\n      // Regex taken from stackoverflow: https://stackoverflow.com/a/7220510\n      return json.replace(\n        /(\"(\\\\u[a-zA-Z0-9]{4}|\\\\[^u]|[^\\\\\"])*\"(\\s*:)?|\\b(true|false|null)\\b|-?\\d+(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)/g,\n        function (match) {\n          let cls = \"number\"\n          if (/^\"/.test(match)) {\n            if (/:$/.test(match)) {\n              cls = \"key\"\n            } else {\n              cls = \"string\"\n            }\n          } else if (/true|false/.test(match)) {\n            cls = \"boolean\"\n          } else if (/null/.test(match)) {\n            cls = \"null\"\n          }\n          return \"<span class=\\\"\" + cls + \"\\\">\" + match + \"</span>\"\n        }\n      )\n    },\n\n    close() {\n      this.items = null\n      this.data = {}\n\n      this.closeBaseDialog()\n    },\n  },\n})\n</script>\n\n<template>\n  <div>\n    <BaseDialog\n      :header=\"_('Data_view')\"\n      :max-width=\"overrideMaxWidth || maxWidth\"\n      :draggable-enabled=\"draggableEnabled\"\n      :attach=\"attach\"\n      :no-save=\"noSave\"\n      :automatic-load-at-save=\"automaticLoadAtSave\"\n      :disable-save=\"disableSave\"\n      @save=\"$emit('save')\"\n      persistent\n      content-class=\"dialog\"\n      extra-class=\"data-view-dialog\"\n      ref=\"baseDialog\"\n    >\n      <VList\n        v-if=\"isNonEmptyArray(items) && items.length > 1\"\n        dense\n        class=\"data-view-sidebar\"\n      >\n        <VListItem class=\"list-header\">\n          <VListItemContent>\n            <VListItemTitle>\n              {{ _(\"Objects\") }}\n            </VListItemTitle>\n          </VListItemContent>\n        </VListItem>\n\n        <VListItem\n          v-for=\"(item, index) in items\"\n          :class=\"{'active' : getId(item) === getId(activeItem)}\"\n          @click=\"activeIndex = index\"\n          class=\"sidebar-nav-card\"\n          :key=\"getId(item)\"\n        >\n          <VListItemContent>\n            <VListItemTitle>\n              <slot\n                :item=\"item\"\n                name=\"sidebaritem\"\n              >\n              </slot>\n            </VListItemTitle>\n          </VListItemContent>\n        </VListItem>\n      </VList>\n\n      <VCard\n        v-if=\"isNonEmptyArray(items)\"\n        class=\"data-view\"\n      >\n        <VCardText class=\"dialog-content full-padding grey-bg pa-4\">\n          <VRow class=\"pl-0\">\n            <VCol :cols=\"12\">\n              <slot name=\"top\"></slot>\n            </VCol>\n          </VRow>\n\n          <VRow\n            v-if=\"isSet(getId(activeItem)) || !onlyCustomData\"\n            class=\"pl-0\"\n          >\n            <!-- CONTENT -->\n\n            <VCol\n              :cols=\"12\"\n            >\n              <VCard class=\"dialog-card\">\n                <VCardText\n                  v-if=\"isSet(getId(activeItem))\"\n                  class=\"pa-0 py-3 border-b-light\"\n                >\n                  <div class=\"d-flex flex-column px-4 gap-1 mb-1\">\n                    <div class=\"d-flex align-center\">\n                      <span class=\"text-start black--text\">\n                        <span v-if=\"isSet(activeItem?.localId)\">{{ _(\"Local_Id\") }}</span>\n                        <span v-else>{{ _(\"ID\") }}</span>\n                      </span>\n                      <VSpacer></VSpacer>\n\n                      <span ref=\"localId\">\n                        {{ getId(activeItem) }}\n                      </span>\n\n                      <CopyToClipboardBtn\n                        :payload=\"getId(activeItem)\"\n                      >\n                      </CopyToClipboardBtn>\n                    </div>\n\n                    <div class=\"d-flex\">\n                      <span class=\"text-start black--text\">\n                        {{ _(\"Created\") }}\n                      </span>\n                      <VSpacer></VSpacer>\n                      <span class=\"text-right\">\n                        {{ activeItem.created | dateTimeFormat }} ({{ activeItem.created }})\n                      </span>\n                    </div>\n\n                    <div class=\"d-flex\">\n                      <span class=\"text-start black--text\">\n                        {{ _(\"Last_modified\") }}\n                      </span>\n                      <VSpacer></VSpacer>\n                      <span class=\"text-right\">\n                        {{ activeItem.lastModified | dateTimeFormat }} ({{ activeItem.lastModified }})\n                      </span>\n                    </div>\n\n                    <div\n                      v-if=\"activeItem.lastModifiedBy\"\n                      class=\"d-flex\"\n                    >\n                      <span class=\"text-start black--text\">\n                        {{ _(\"Last_modified_by\") }}\n                      </span>\n                      <VSpacer></VSpacer>\n                      <span class=\"text-right\">\n                        {{ activeItem.lastModifiedBy }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <slot\n                    :item=\"activeItem\"\n                    name=\"info\"\n                  ></slot>\n                </VCardText>\n\n                <VExpansionPanels\n                  v-if=\"!onlyCustomData\"\n                  :value=\"openJsonPanels\"\n                  multiple\n                  flat\n                  class=\"pa-0\"\n                >\n                  <VExpansionPanel class=\"pa-0\">\n                    <VExpansionPanelHeader>\n                      JSON Object\n                    </VExpansionPanelHeader>\n                    <VExpansionPanelContent class=\"pa-0\">\n                      <div style=\"position: relative;\">\n                        <JsonViewer\n                          :json=\"activeItem\"\n                          expanded-on-start\n                        ></JsonViewer>\n                        <CopyToClipboardBtn\n                          :payload=\"activeItem\"\n                          custom-class=\"large-absolute\"\n                        >\n                        </CopyToClipboardBtn>\n                      </div>\n                    </VExpansionPanelContent>\n                  </VExpansionPanel>\n                </VExpansionPanels>\n              </VCard>\n            </VCol>\n          </VRow>\n        </VCardText>\n      </VCard>\n    </BaseDialog>\n  </div>\n</template>\n\n<style\n    lang=\"scss\"\n>\n.data-view-dialog {\n  display: flex;\n\n  .dialog-content {\n    display: flex;\n    overflow: hidden auto !important;\n    flex-direction: column;\n  }\n\n  .v-card.v-sheet {\n    overflow-y: auto;\n  }\n\n  .v-expansion-panel-content__wrap {\n    padding: 0 !important;\n  }\n\n  .row {\n    overflow: auto;\n  }\n}\n\n.data-view-sidebar {\n  width: 270px;\n  min-width: 270px;\n  position: sticky;\n  top: 0;\n  height: 100%;\n  padding: 0;\n  overflow-y: auto;\n  border-right: 1px solid var(--v-border-base);\n  background: #fff;\n\n  .list-header {\n    background: var(--v-background-base);\n    min-height: 30px !important;\n    padding-left: 12px;\n    border-bottom: 1px solid var(--v-border-base);\n\n    .v-list-item__title {\n      text-transform: uppercase;\n      font-weight: 600 !important;\n      color: grey;\n      font-size: 12px;\n    }\n  }\n\n  .sidebar-nav-header {\n    padding: 5px 12px;\n    background: #e9eff3;\n    border-bottom: 1px solid var(--v-border-base);\n    font-weight: 500;\n    color: #666;\n  }\n\n  .sidebar-nav-card {\n    border-bottom: 1px solid var(--v-border-base);\n    width: 100%;\n    background: #fff;\n    padding: 4px 12px;\n    font-weight: 500;\n\n    .label {\n      display: block;\n      width: 100%;\n      font-size: 15px !important;\n      color: black;\n      font-weight: 500;\n      text-align: left;\n      padding: 0 0 4px;\n    }\n\n    .sku {\n      display: block;\n      width: 100%;\n      font-size: 14px;\n      font-weight: 400;\n      color: #666;\n    }\n  }\n\n  .sidebar-nav-card.active {\n    background: #eee6ff;\n    color: #1e1337;\n    border-bottom: 1px solid #aa8fe5;\n    border-top: 1px solid #aa8fe5;\n  }\n}\n\n.data-view {\n  width: 100%;\n\n  .v-expansion-panel {\n    border-left: 0;\n    border-right: 0;\n  }\n\n  .v-expansion-panel-header {\n    padding: 12px 16px !important;\n  }\n\n  .header {\n    width: 100%;\n    background: grey;\n    padding: 8px 16px;\n    border-bottom: 1px solid var(--v-border-base);\n    border-top: 1px solid var(--v-border-base);\n    text-transform: uppercase;\n    font-weight: 600;\n    color: grey;\n    font-size: 12px;\n  }\n\n  .data-view-card {\n    pre {\n      background: #313853;\n      color: #78e39e;\n      border-radius: 0;\n    }\n\n    /* Replacement for Vuetify classes when dialog is not attached to #app */\n    .v-card__text {\n      padding: 0;\n\n      .orderrows-panel {\n        .v-expansion-panel-header__icon {\n          margin-left: auto;\n        }\n      }\n    }\n  }\n\n  /* Replacement for Vuetify classes when dialog is not attached to #app */\n  .v-card__text.dialog-content > .row {\n    padding-left: 0;\n  }\n}\n\n.expandable-header {\n  font-size: 16px;\n  font-weight: 500;\n  padding: 0 20;\n  background: grey;\n  color: black;\n  border-bottom: 1px solid var(--v-border-base);\n}\n\n.enable-popups-dialog {\n  background: white;\n\n  img {\n    width: 100%;\n  }\n\n  .how-to-list {\n    h4 {\n      color: black;\n      font-size: 16px;\n      font-weight: 600;\n      margin-bottom: 10;\n    }\n\n    ol {\n      padding-left: 16px;\n\n      li {\n        line-height: 1.3;\n        margin-bottom: 10;\n        color: grey;\n        font-size: 14px;\n      }\n    }\n  }\n}\n\n.syntax-highlighting {\n  color: #919bc2;\n  background: #313853;\n  border-radius: 0;\n  padding: 12px;\n  margin: 0;\n  max-height: 60vh;\n  overflow: auto;\n\n  .string { color: #78e39e; }\n  .number { color: #78e39e; }\n  .boolean { color: #78e39e; }\n  .null { color: #fff; }\n  .key { color: #ff6b72; }\n}\n</style>","import mod from \"-!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataViewDialog.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataViewDialog.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./DataViewDialog.vue?vue&type=template&id=01f4d304\"\nimport script from \"./DataViewDialog.vue?vue&type=script&lang=js\"\nexport * from \"./DataViewDialog.vue?vue&type=script&lang=js\"\nimport style0 from \"./DataViewDialog.vue?vue&type=style&index=0&id=01f4d304&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 { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VExpansionPanel } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelContent } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanelHeader } from 'vuetify/lib/components/VExpansionPanel';\nimport { VExpansionPanels } from 'vuetify/lib/components/VExpansionPanel';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('BaseDialog',{ref:\"baseDialog\",attrs:{\"header\":_vm._('Data_view'),\"max-width\":_vm.overrideMaxWidth || _vm.maxWidth,\"draggable-enabled\":_vm.draggableEnabled,\"attach\":_vm.attach,\"no-save\":_vm.noSave,\"automatic-load-at-save\":_vm.automaticLoadAtSave,\"disable-save\":_vm.disableSave,\"persistent\":\"\",\"content-class\":\"dialog\",\"extra-class\":\"data-view-dialog\"},on:{\"save\":function($event){return _vm.$emit('save')}}},[(_vm.isNonEmptyArray(_vm.items) && _vm.items.length > 1)?_c(VList,{staticClass:\"data-view-sidebar\",attrs:{\"dense\":\"\"}},[_c(VListItem,{staticClass:\"list-header\"},[_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"\\n            \"+_vm._s(_vm._(\"Objects\"))+\"\\n          \")])],1)],1),_vm._v(\" \"),_vm._l((_vm.items),function(item,index){return _c(VListItem,{key:_vm.getId(item),staticClass:\"sidebar-nav-card\",class:{'active' : _vm.getId(item) === _vm.getId(_vm.activeItem)},on:{\"click\":function($event){_vm.activeIndex = index}}},[_c(VListItemContent,[_c(VListItemTitle,[_vm._t(\"sidebaritem\",null,{\"item\":item})],2)],1)],1)})],2):_vm._e(),_vm._v(\" \"),(_vm.isNonEmptyArray(_vm.items))?_c(VCard,{staticClass:\"data-view\"},[_c(VCardText,{staticClass:\"dialog-content full-padding grey-bg pa-4\"},[_c(VRow,{staticClass:\"pl-0\"},[_c(VCol,{attrs:{\"cols\":12}},[_vm._t(\"top\")],2)],1),_vm._v(\" \"),(_vm.isSet(_vm.getId(_vm.activeItem)) || !_vm.onlyCustomData)?_c(VRow,{staticClass:\"pl-0\"},[_c(VCol,{attrs:{\"cols\":12}},[_c(VCard,{staticClass:\"dialog-card\"},[(_vm.isSet(_vm.getId(_vm.activeItem)))?_c(VCardText,{staticClass:\"pa-0 py-3 border-b-light\"},[_c('div',{staticClass:\"d-flex flex-column px-4 gap-1 mb-1\"},[_c('div',{staticClass:\"d-flex align-center\"},[_c('span',{staticClass:\"text-start black--text\"},[(_vm.isSet(_vm.activeItem?.localId))?_c('span',[_vm._v(_vm._s(_vm._(\"Local_Id\")))]):_c('span',[_vm._v(_vm._s(_vm._(\"ID\")))])]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('span',{ref:\"localId\"},[_vm._v(\"\\n                      \"+_vm._s(_vm.getId(_vm.activeItem))+\"\\n                    \")]),_vm._v(\" \"),_c('CopyToClipboardBtn',{attrs:{\"payload\":_vm.getId(_vm.activeItem)}})],1),_vm._v(\" \"),_c('div',{staticClass:\"d-flex\"},[_c('span',{staticClass:\"text-start black--text\"},[_vm._v(\"\\n                      \"+_vm._s(_vm._(\"Created\"))+\"\\n                    \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('span',{staticClass:\"text-right\"},[_vm._v(\"\\n                      \"+_vm._s(_vm._f(\"dateTimeFormat\")(_vm.activeItem.created))+\" (\"+_vm._s(_vm.activeItem.created)+\")\\n                    \")])],1),_vm._v(\" \"),_c('div',{staticClass:\"d-flex\"},[_c('span',{staticClass:\"text-start black--text\"},[_vm._v(\"\\n                      \"+_vm._s(_vm._(\"Last_modified\"))+\"\\n                    \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('span',{staticClass:\"text-right\"},[_vm._v(\"\\n                      \"+_vm._s(_vm._f(\"dateTimeFormat\")(_vm.activeItem.lastModified))+\" (\"+_vm._s(_vm.activeItem.lastModified)+\")\\n                    \")])],1),_vm._v(\" \"),(_vm.activeItem.lastModifiedBy)?_c('div',{staticClass:\"d-flex\"},[_c('span',{staticClass:\"text-start black--text\"},[_vm._v(\"\\n                      \"+_vm._s(_vm._(\"Last_modified_by\"))+\"\\n                    \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('span',{staticClass:\"text-right\"},[_vm._v(\"\\n                      \"+_vm._s(_vm.activeItem.lastModifiedBy)+\"\\n                    \")])],1):_vm._e()]),_vm._v(\" \"),_vm._t(\"info\",null,{\"item\":_vm.activeItem})],2):_vm._e(),_vm._v(\" \"),(!_vm.onlyCustomData)?_c(VExpansionPanels,{staticClass:\"pa-0\",attrs:{\"value\":_vm.openJsonPanels,\"multiple\":\"\",\"flat\":\"\"}},[_c(VExpansionPanel,{staticClass:\"pa-0\"},[_c(VExpansionPanelHeader,[_vm._v(\"\\n                    JSON Object\\n                  \")]),_vm._v(\" \"),_c(VExpansionPanelContent,{staticClass:\"pa-0\"},[_c('div',{staticStyle:{\"position\":\"relative\"}},[_c('JsonViewer',{attrs:{\"json\":_vm.activeItem,\"expanded-on-start\":\"\"}}),_vm._v(\" \"),_c('CopyToClipboardBtn',{attrs:{\"payload\":_vm.activeItem,\"custom-class\":\"large-absolute\"}})],1)])],1)],1):_vm._e()],1)],1)],1):_vm._e()],1)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VSelect } from 'vuetify/lib/components/VSelect';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{attrs:{\"data-test-id\":_vm.dataTestId}},[_c(VSelect,_vm._b({ref:\"select\",staticClass:\"pb-select noselect pb-core-icon\",class:_vm.customClass,attrs:{\"value\":_vm.value,\"items\":_vm.items,\"placeholder\":_vm.placeholder,\"persistent-placeholder\":_vm.persistentPlaceholder,\"menu-props\":_vm.computedMenuProps,\"rules\":_vm.computedRules,\"error\":_vm.validateError,\"hide-details\":Array.isArray(_vm.computedRules) && _vm.validateRules(_vm.value, _vm.computedRules),\"multiple\":_vm.multiple,\"dense\":_vm.dense,\"outlined\":_vm.outlined,\"attach\":_vm.attach,\"item-text\":_vm.itemText,\"item-value\":_vm.itemValue,\"prepend-inner-icon\":_vm.prependInnerIcon,\"clear-icon\":\"mdi-close-circle\"},on:{\"change\":function($event){return _vm.$emit('change', $event)}},scopedSlots:_vm._u([(_vm.twoLines || _vm.$scopedSlots.customitem)?{key:\"item\",fn:function(props){return [(_vm.twoLines)?[_c('div',{staticClass:\"d-flex flex-col list-row\",attrs:{\"data-test-id\":_vm.dataTestId+'-props?.item',\"data-test-value\":props?.item.value}},[_c('div',{staticClass:\"font-weight-medium\"},[_vm._v(\"\\n            \"+_vm._s(props?.item?.[_vm.computedItemValue])+\"\\n          \")]),_vm._v(\" \"),(typeof (_vm.itemText) === 'string')?_c('span',{staticClass:\"text-body-2\"},[_vm._v(\"\\n            \"+_vm._s(props?.item?.[_vm.itemText])+\"\\n          \")]):_vm._e()])]:(_vm.$scopedSlots.customitem)?[_vm._t(\"customitem\",null,{\"props\":props})]:_vm._e()]}}:null,(_vm.twoLines || _vm.$scopedSlots.customselection)?{key:\"selection\",fn:function(props){return [(_vm.twoLines)?[_c('div',{staticClass:\"d-flex flex-col list-row\",attrs:{\"data-test-id\":_vm.dataTestId+'-props?.item',\"data-test-value\":props?.value}},[_c('div',{staticClass:\"font-weight-medium\"},[_vm._v(\"\\n            \"+_vm._s(props?.item?.[_vm.computedItemValue])+\"\\n          \")]),_vm._v(\" \"),(typeof (_vm.itemText) === 'string')?_c('span',{staticClass:\"text-body-2\"},[_vm._v(\"\\n            \"+_vm._s(props?.item?.[_vm.itemText])+\"\\n          \")]):_vm._e()])]:(_vm.$scopedSlots.customselection)?[_vm._t(\"customselection\",null,{\"props\":props})]:_vm._e()]}}:null],null,true)},'VSelect',_vm.$attrs,false))],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport { selectMixin } from \"@/mixins\"\n\nimport VueHelper from \"@/modules/utils/vuehelper\"\nimport { _ } from \"@/modules/utils/localehelpers\"\n\nexport default defineComponent({\n  name: \"PbSelect\",\n\n  mixins: [ selectMixin ],\n\n  inheritAttrs: false,\n\n  props: {\n    /* Can be anything */\n    value: null,\n\n    items: {\n      type: Array,\n      required: true,\n    },\n\n    dataTestId: String,\n\n    prependInnerIcon: String,\n\n    placeholder: {\n      type: String,\n      default: () => _(\"Unset\"),\n    },\n\n    persistentPlaceholder: {\n      type: Boolean,\n      default: () => true,\n    },\n\n    badge: Boolean,\n\n    customClass: String,\n    customContentClass: String,\n    twoLines: Boolean,\n\n    withAddButton: {\n      type: Boolean,\n      default: () => false,\n    },\n\n    dense: {\n      type: Boolean,\n      default: () => true,\n    },\n\n    outlined: {\n      type: Boolean,\n      default: () => true,\n    },\n\n    required: Boolean,\n    multiple: Boolean,\n\n    attach: Boolean,\n\n    itemValue: {\n      type: String,\n      default: \"value\",\n    },\n    displayItemValue: String,\n    itemText: {\n      type: [ String, Function ],\n      default: \"text\",\n    },\n\n    error: Boolean,\n  },\n\n  computed: {\n    computedContentClass() {\n      const classes = [ \"pb-select-core-content\" ]\n\n      if (this.withAddButton) {\n        classes.push(\"with-add-btn\")\n      }\n\n      if (this.twoLines) {\n        classes.push(\"list-two-lines\")\n      }\n\n      if (this.customContentClass) {\n        classes.push(this.customContentClass)\n      }\n\n      return classes.join(\" \")\n    },\n\n    computedMenuProps() {\n      return {\n        contentClass: this.computedContentClass,\n      }\n    },\n\n    computedItemValue() {\n      return this.displayItemValue || this.itemValue\n    },\n\n    validateError() {\n      if (this.error) {\n        return this.error\n      }\n      if (this.required && Array.isArray(this.computedRules)) {\n        return !this.validateRules(this.value, this.computedRules)\n      }\n      else {\n        return false\n      }\n    },\n  },\n\n  methods: {\n    setLazyValue(val: any) {\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"select\", null).then(\n        // @ts-ignore\n        (select) => (select.lazyValue = val)\n      )\n    },\n\n    setInitialValue(val: any) {\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"select\", null).then(\n        // @ts-ignore\n        (select) => (select.initialValue = val)\n      )\n    },\n  },\n})\n</script>\n<template>\n  <div :data-test-id=\"dataTestId\">\n    <VSelect\n      v-bind=\"$attrs\"\n      :value=\"value\"\n      :items=\"items\"\n      :placeholder=\"placeholder\"\n      :persistent-placeholder=\"persistentPlaceholder\"\n      :menu-props=\"computedMenuProps\"\n      :rules=\"computedRules\"\n      :error=\"validateError\"\n      :hide-details=\"Array.isArray(computedRules) && validateRules(value, computedRules)\"\n      :multiple=\"multiple\"\n      :dense=\"dense\"\n      :outlined=\"outlined\"\n      :class=\"customClass\"\n      :attach=\"attach\"\n      :item-text=\"itemText\"\n      :item-value=\"itemValue\"\n      :prepend-inner-icon=\"prependInnerIcon\"\n      @change=\"$emit('change', $event)\"\n      class=\"pb-select noselect pb-core-icon\"\n      clear-icon=\"mdi-close-circle\"\n      ref=\"select\"\n    >\n      <template\n        v-if=\"twoLines || $scopedSlots.customitem\"\n        #item=\"props\"\n      >\n        <template\n          v-if=\"twoLines\"\n        >\n          <div\n            :data-test-id=\"dataTestId+'-props?.item'\"\n            :data-test-value=\"props?.item.value\"\n            class=\"d-flex flex-col list-row\"\n          >\n            <div class=\"font-weight-medium\">\n              {{ props?.item?.[computedItemValue] }}\n            </div>\n            <span\n              v-if=\"typeof (itemText) === 'string'\"\n              class=\"text-body-2\"\n            >\n              {{ props?.item?.[itemText] }}\n            </span>\n          </div>\n        </template>\n\n        <template\n          v-else-if=\"$scopedSlots.customitem\"\n        >\n          <slot\n            :props=\"props\"\n            name=\"customitem\"\n          >\n          </slot>\n        </template>\n      </template>\n\n      <template\n        v-if=\"twoLines || $scopedSlots.customselection\"\n        #selection=\"props\"\n      >\n        <template\n          v-if=\"twoLines\"\n        >\n          <div\n            :data-test-id=\"dataTestId+'-props?.item'\"\n            :data-test-value=\"props?.value\"\n            class=\"d-flex flex-col list-row\"\n          >\n            <div class=\"font-weight-medium\">\n              {{ props?.item?.[computedItemValue] }}\n            </div>\n            <span\n              v-if=\"typeof (itemText) === 'string'\"\n              class=\"text-body-2\"\n            >\n              {{ props?.item?.[itemText] }}\n            </span>\n          </div>\n        </template>\n\n        <template\n          v-else-if=\"$scopedSlots.customselection\"\n        >\n          <slot\n            :props=\"props\"\n            name=\"customselection\"\n          >\n          </slot>\n        </template>\n      </template>\n    </VSelect>\n  </div>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PbSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PbSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./PbSelect.vue?vue&type=template&id=f8a824f6&scoped=true\"\nimport script from \"./PbSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./PbSelect.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  \"f8a824f6\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VBtn,{staticClass:\"btn-logout\",attrs:{\"loading\":_vm.loggingOut},on:{\"click\":function($event){$event.preventDefault();return _vm.logout.apply(null, arguments)}}},[_vm._v(\"\\n  \"+_vm._s(_vm._(\"Logout\"))+\"\\n\")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport Locale from \"@/modules/utils/locales\"\n\nimport Session from \"@/modules/managers/session\"\n\ninterface State {\n  loggingOut: boolean\n}\n\nexport default defineComponent({\n  name: \"LogoutBtn\",\n\n  data(): State {\n    return {\n      loggingOut: false,\n    }\n  },\n\n  methods: {\n    logout() {\n      this.loggingOut = true\n      Session.logout()\n        .then(() => (window.location.href = \"/\"))\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n</script>\n<template>\n  <VBtn\n    :loading=\"loggingOut\"\n    @click.prevent=\"logout\"\n    class=\"btn-logout\"\n  >\n    {{ _(\"Logout\") }}\n  </VBtn>\n</template>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogoutBtn.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LogoutBtn.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LogoutBtn.vue?vue&type=template&id=5d8eae09\"\nimport script from \"./LogoutBtn.vue?vue&type=script&lang=ts\"\nexport * from \"./LogoutBtn.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","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nexport default defineComponent({\n  name: \"SidebarMenuItem\",\n\n  props: {\n    href: { type: String },\n  },\n\n  methods: {\n    activeItem() {\n      let currentPath = window.location.pathname\n      return this.href === currentPath\n    },\n  },\n})\n</script>\n<template>\n  <VListItem\n    :class=\"{ active: activeItem() }\"\n    :href=\"href\"\n    class=\"sidenav-item\"\n  >\n    <slot></slot>\n  </VListItem>\n</template>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarMenuItem.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarMenuItem.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SidebarMenuItem.vue?vue&type=template&id=f8e61c30\"\nimport script from \"./SidebarMenuItem.vue?vue&type=script&lang=ts\"\nexport * from \"./SidebarMenuItem.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","import { VListItem } from 'vuetify/lib/components/VList';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VListItem,{staticClass:\"sidenav-item\",class:{ active: _vm.activeItem() },attrs:{\"href\":_vm.href}},[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport { actionDialogMixin } from \"@/mixins\"\n\nimport VueHelper from \"@/modules/utils/vuehelper\"\nimport Locale from \"@/modules/utils/locales\"\n\nimport {\n  ActionDialog,\n} from \"@/components\"\n\nexport default defineComponent({\n  name: \"DeleteDialog\",\n\n  components: {\n    ActionDialog,\n  },\n\n  mixins: [ actionDialogMixin ],\n\n  inheritAttrs: false,\n\n  data() {\n    return {\n      userInput: \"\",\n      isArchive: true,\n      withoutConfirm: false,\n    }\n  },\n\n  computed: {\n    isConfirmDisabled() {\n      if (this.withoutConfirm) {\n        return false\n      } else {\n        return (this.userInput + \"\").toLowerCase() !== \"delete\"\n      }\n    },\n  },\n\n  methods: {\n    open(title: string, description: string, confirm: boolean) {\n      this.superOpen(title, description)\n      this.withoutConfirm = confirm\n\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\").then((dialog) => dialog.open())\n\n      return this.promise\n    },\n\n    _delete() {\n      this.resolve(true)\n\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\", \"close\").then((dialog) =>\n      // @ts-ignore\n        dialog.close()\n      )\n\n      this.superReset()\n      this.reset()\n    },\n\n    cancel() {\n      this.resolve(false)\n\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\", \"close\").then((dialog) =>\n      // @ts-ignore\n        dialog.close()\n      )\n\n      this.superReset()\n      this.reset()\n    },\n\n    reset() {\n      this.userInput = \"\"\n      this.isArchive = true\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n</script>\n<template>\n  <ActionDialog\n    v-bind=\"$attrs\"\n    :title=\"title || ''\"\n    :description=\"description || ''\"\n    data-test-id=\"action-dialog-delete\"\n    ref=\"dialog\"\n  >\n    <template #icon>\n      <div class=\"icon-wrapper delete\">\n        <FontAwesomeIcon icon=\"fa-solid fa-trash-can\">\n        </FontAwesomeIcon>\n      </div>\n    </template>\n\n    <template #buttons>\n      <VBtn\n        @click=\"cancel\"\n        depressed\n        color=\"grey--text\"\n        data-test-id=\"delete-dialog-cancel-button\"\n      >\n        {{ _(\"Cancel\") }}\n      </VBtn>\n\n      <VBtn\n        @click=\"_delete\"\n        depressed\n        data-test-id=\"delete-dialog-confirm-button\"\n        color=\"error\"\n      >\n        {{ _(\"Yes\") }}\n      </VBtn>\n    </template>\n  </ActionDialog>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DeleteDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DeleteDialog.vue?vue&type=template&id=6df3aec5&scoped=true\"\nimport script from \"./DeleteDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./DeleteDialog.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  \"6df3aec5\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ActionDialog',_vm._b({ref:\"dialog\",attrs:{\"title\":_vm.title || '',\"description\":_vm.description || '',\"data-test-id\":\"action-dialog-delete\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"icon-wrapper delete\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fa-solid fa-trash-can\"}})],1)]},proxy:true},{key:\"buttons\",fn:function(){return [_c(VBtn,{attrs:{\"depressed\":\"\",\"color\":\"grey--text\",\"data-test-id\":\"delete-dialog-cancel-button\"},on:{\"click\":_vm.cancel}},[_vm._v(\"\\n      \"+_vm._s(_vm._(\"Cancel\"))+\"\\n    \")]),_vm._v(\" \"),_c(VBtn,{attrs:{\"depressed\":\"\",\"data-test-id\":\"delete-dialog-confirm-button\",\"color\":\"error\"},on:{\"click\":_vm._delete}},[_vm._v(\"\\n      \"+_vm._s(_vm._(\"Yes\"))+\"\\n    \")])]},proxy:true}])},'ActionDialog',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport { actionDialogMixin } from \"@/mixins\"\n\nimport VueHelper from \"@/modules/utils/vuehelper\"\nimport Locale from \"@/modules/utils/locales\"\n\nimport {\n  ActionDialog,\n} from \"@/components\"\n\ninterface State {\n  confirmText: string,\n  defaultText: string,\n}\n\nexport default defineComponent({\n  name: \"ConfirmDialog\",\n\n  components: {\n    ActionDialog,\n  },\n\n  mixins: [ actionDialogMixin ],\n\n  inheritAttrs: false,\n\n  props: {\n    saveEnabled: {\n      type: Boolean,\n      default: () => true,\n    },\n  },\n\n  data: (): State => ({\n    confirmText: Locale.translate(\"Yes\"),\n    defaultText: Locale.translate(\"Yes\"),\n  }),\n\n  methods: {\n    open(title: string, description: string, confirmText?: string) {\n      this.superOpen(title, description)\n\n      if (confirmText) {\n        this.confirmText = confirmText\n      }\n\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\").then((dialog) => dialog.open())\n\n      return this.promise\n    },\n\n    confirm() {\n      if (this.resolve) {\n        this.resolve(true)\n      }\n\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\", \"close\").then((dialog) =>\n      // @ts-ignore\n        dialog.close()\n      )\n\n      this.superReset()\n      this.confirmText = this.defaultText\n    },\n\n    cancel() {\n      // @ts-ignore\n      this.resolve(false)\n\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\", \"close\").then((dialog) =>\n      // @ts-ignore\n        dialog.close()\n      )\n\n      this.superReset()\n      this.confirmText = this.defaultText\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n</script>\n<template>\n  <ActionDialog\n    v-bind=\"$attrs\"\n    :title=\"title || ''\"\n    :description=\"description || ''\"\n    :max-width=\"390\"\n    data-test-id=\"action-dialog-confirm\"\n    ref=\"dialog\"\n  >\n    <template\n      #content\n    >\n      <slot\n        v-if=\"$scopedSlots.content\"\n        name=\"content\"\n      ></slot>\n    </template>\n\n    <template #buttons>\n      <VBtn\n        @click=\"cancel\"\n        depressed\n        color=\"grey--text\"\n        class=\"cancel\"\n        data-test-id=\"confirm-dialog-cancel-button\"\n      >\n        {{ _(\"Cancel\") }}\n      </VBtn>\n      <VBtn\n        :disabled=\"!saveEnabled\"\n        @click=\"confirm\"\n        depressed\n        class=\"yes-btn secondary\"\n        data-test-id=\"confirm-dialog-confirm-button\"\n      >\n        {{ confirmText }}\n      </VBtn>\n    </template>\n  </ActionDialog>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ConfirmDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ConfirmDialog.vue?vue&type=template&id=0e96cfae&scoped=true\"\nimport script from \"./ConfirmDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./ConfirmDialog.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  \"0e96cfae\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ActionDialog',_vm._b({ref:\"dialog\",attrs:{\"title\":_vm.title || '',\"description\":_vm.description || '',\"max-width\":390,\"data-test-id\":\"action-dialog-confirm\"},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [(_vm.$scopedSlots.content)?_vm._t(\"content\"):_vm._e()]},proxy:true},{key:\"buttons\",fn:function(){return [_c(VBtn,{staticClass:\"cancel\",attrs:{\"depressed\":\"\",\"color\":\"grey--text\",\"data-test-id\":\"confirm-dialog-cancel-button\"},on:{\"click\":_vm.cancel}},[_vm._v(\"\\n      \"+_vm._s(_vm._(\"Cancel\"))+\"\\n    \")]),_vm._v(\" \"),_c(VBtn,{staticClass:\"yes-btn secondary\",attrs:{\"disabled\":!_vm.saveEnabled,\"depressed\":\"\",\"data-test-id\":\"confirm-dialog-confirm-button\"},on:{\"click\":_vm.confirm}},[_vm._v(\"\\n      \"+_vm._s(_vm.confirmText)+\"\\n    \")])]},proxy:true}],null,true)},'ActionDialog',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport { actionDialogMixin } from \"@/mixins\"\n\nimport VueHelper from \"@/modules/utils/vuehelper\"\nimport Util from \"@/modules/utils/util\"\nimport { _ } from \"@/modules/utils/localehelpers\"\n\nimport {\n  ActionDialog,\n} from \"@/components\"\n\nexport default defineComponent({\n  name: \"ErrorDialog\",\n\n  components: {\n    ActionDialog,\n  },\n\n  mixins: [ actionDialogMixin ],\n\n  inheritAttrs: false,\n\n  methods: {\n    open(error: any) {\n      const getMsg = (err: any): string => {\n        if (err instanceof Error) {\n          return err.message\n        } else if (Util.isObject(err)) {\n          if (Util.isSet(err?.responseJSON?.message)) {\n            return err.responseJSON.message\n          }\n\n          if (Util.notEmptyObject(err?.responseJSON)) {\n            return JSON.stringify(err.responseJSON, null, 4)\n          }\n\n          if (Util.isSet(err?.responseText)) {\n            return err.responseText\n          }\n\n          if (Util.isSet(err)) {\n            return JSON.stringify(err, null, 4)\n          }\n\n          return err\n        } else if (Array.isArray(err)) {\n          return (err as Array<string>)\n            .map((e: string) => getMsg(e))\n            .join(\", \")\n        } else if (Util.isSet(err)) {\n          return JSON.stringify(err, null, 4)\n        }\n\n        return err\n      }\n\n      this.superOpen(_(\"Something_went_wrong\"), getMsg(error))\n\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\").then((dialog) => dialog.open())\n\n      return this.promise\n    },\n\n    copyText() {\n      // If connection is secure use Clipboard API otherwise select input value\n      if (location.protocol === \"https:\") {\n        // @ts-ignore\n        navigator.clipboard.writeText(this.description)\n      } else {\n        // @ts-ignore\n        VueHelper.waitForRender(this, \"errortext\", null).then((textArea) => {\n          // @ts-ignore\n          if (textArea.$el) {\n            // @ts-ignore\n            const textToCopy = textArea.$el.querySelector(\"textarea\")\n\n            textToCopy.select()\n            document.execCommand(\"copy\")\n          }\n        })\n      }\n\n      // @ts-ignore\n      this.showCopySnackbar()\n    },\n\n    close() {\n      this.resolve()\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\", \"close\").then((dialog) =>\n      // @ts-ignore\n        dialog.close()\n      )\n\n      this.superReset()\n    },\n  },\n})\n</script>\n<template>\n  <ActionDialog\n    v-bind=\"$attrs\"\n    :title=\"title || ''\"\n    :max-width=\"440\"\n    data-test-id=\"action-dialog-error\"\n    ref=\"dialog\"\n  >\n    <template #icon>\n      <div class=\"icon-wrapper delete\">\n        <FontAwesomeIcon icon=\"fas fa-exclamation\">\n        </FontAwesomeIcon>\n      </div>\n    </template>\n\n    <template #description>\n      <div class=\"error-wrapper\">\n        <VTextarea\n          :value=\"description\"\n          auto-grow\n          readonly\n          outlined\n          ref=\"errortext\"\n        ></VTextarea>\n\n        <VBtn\n          @click=\"copyText\"\n          icon\n          text\n          x-small\n          class=\"text-append-btn\"\n        >\n          <FontAwesomeIcon icon=\"far fa-copy\">\n          </FontAwesomeIcon>\n        </VBtn>\n      </div>\n    </template>\n  </ActionDialog>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ErrorDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ErrorDialog.vue?vue&type=template&id=55ff3b8c&scoped=true\"\nimport script from \"./ErrorDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./ErrorDialog.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  \"55ff3b8c\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ActionDialog',_vm._b({ref:\"dialog\",attrs:{\"title\":_vm.title || '',\"max-width\":440,\"data-test-id\":\"action-dialog-error\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"icon-wrapper delete\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fas fa-exclamation\"}})],1)]},proxy:true},{key:\"description\",fn:function(){return [_c('div',{staticClass:\"error-wrapper\"},[_c(VTextarea,{ref:\"errortext\",attrs:{\"value\":_vm.description,\"auto-grow\":\"\",\"readonly\":\"\",\"outlined\":\"\"}}),_vm._v(\" \"),_c(VBtn,{staticClass:\"text-append-btn\",attrs:{\"icon\":\"\",\"text\":\"\",\"x-small\":\"\"},on:{\"click\":_vm.copyText}},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-copy\"}})],1)],1)]},proxy:true}])},'ActionDialog',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport { actionDialogMixin } from \"@/mixins\"\n\nimport VueHelper from \"@/modules/utils/vuehelper\"\n\nimport {\n  ActionDialog,\n} from \"@/components\"\n\nexport default defineComponent({\n  name: \"InfoDialog\",\n\n  components: {\n    ActionDialog,\n  },\n\n  mixins: [ actionDialogMixin ],\n\n  inheritAttrs: false,\n\n  methods: {\n    open(title: string, description: string) {\n      this.superOpen(title, description)\n\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\")\n      // @ts-ignore\n        .then(dialog => dialog.open())\n\n      return this.promise\n    },\n\n    close() {\n      this.resolve()\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\")\n      // @ts-ignore\n        .then(dialog => dialog.close())\n\n      this.superReset()\n    },\n  },\n})\n\n</script>\n<template>\n  <ActionDialog\n    v-bind=\"$attrs\"\n    :title=\"title || ''\"\n    :description=\"description || ''\"\n    data-test-id=\"action-dialog-information\"\n    ref=\"dialog\"\n  >\n    <template #icon>\n      <div class=\"icon-wrapper\">\n        <FontAwesomeIcon icon=\"fas fa-info\">\n        </FontAwesomeIcon>\n      </div>\n    </template>\n  </ActionDialog>\n</template>","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./InfoDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./InfoDialog.vue?vue&type=template&id=689fb2e0\"\nimport script from \"./InfoDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./InfoDialog.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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ActionDialog',_vm._b({ref:\"dialog\",attrs:{\"title\":_vm.title || '',\"description\":_vm.description || '',\"data-test-id\":\"action-dialog-information\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"icon-wrapper\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fas fa-info\"}})],1)]},proxy:true}])},'ActionDialog',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport { actionDialogMixin } from \"@/mixins\"\n\nimport VueHelper from \"@/modules/utils/vuehelper\"\nimport Util from \"@/modules/utils/util\"\nimport { _ } from \"@/modules/utils/localehelpers\"\n\nimport {\n  ActionDialog,\n} from \"@/components\"\n\ninterface State {\n  maxWidth: number,\n  progress: number | null,\n  progressInterval: ReturnType<typeof setInterval> | null\n  duration: number | null,\n  byline: string | null\n}\n\nexport default defineComponent({\n  name: \"LoadingDialog\",\n\n  components: {\n    ActionDialog,\n  },\n\n  mixins: [ actionDialogMixin ],\n\n  inheritAttrs: false,\n\n  data: (): State => ({\n    maxWidth: 440,\n    progress: null,\n    progressInterval: null,\n    duration: null,\n    byline: null,\n  }),\n\n  beforeDestroy() {\n    this.progress = null\n    if (Util.isSet(this.progressInterval)) {\n      clearInterval(this.progressInterval)\n    }\n  },\n\n  methods: {\n    open(optionalTitle: string, estimatedProgress: number) {\n      this.superOpen(optionalTitle, \"\")\n\n      if (Util.isSet(estimatedProgress)) {\n        this.progress = 0\n        this.duration = estimatedProgress\n        this.byline = _(\"Loading_progress_start\")\n        this.startProgress()\n      }\n\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\").then((dialog) => dialog.open())\n    },\n\n    startProgress() {\n      if (!this.duration) this.duration = 0\n      if (!this.progress) this.progress = 0\n      const duration = this.duration * 1000\n      const interval = 100\n      const increment = (interval / duration) * 100\n      const slowDownAt = 70\n      const slowIncrement = increment / 2\n\n      this.progressInterval = setInterval(() => {\n        if (this.progress !== null) {\n          if (this.progress < slowDownAt) {\n            this.progress += increment\n          } else if (this.progress < 100) {\n            this.byline = _(\"Loading_progress_still\")\n            this.progress += slowIncrement\n          } else {\n            this.byline = _(\"Loading_progress_full\")\n            if (this.progressInterval) {\n              clearInterval(this.progressInterval)\n            }\n          }\n        }\n      }, interval)\n    },\n\n    finishProgress() {\n      const duration = 1200\n      const interval = 100\n      if (!this.progress) this.progress = 0\n      const remaining = 100 - this.progress\n      const increment = (interval / duration) * remaining\n\n      if (this.progressInterval) {\n        clearInterval(this.progressInterval)\n      }\n\n      this.progressInterval = setInterval(() => {\n        if (!this.progress) this.progress = 0\n        if (this.progress < 100) {\n          this.progress += increment\n        } else {\n          if (this.progressInterval) {\n            clearInterval(this.progressInterval)\n          }\n          this.closeDialog()\n        }\n      }, interval)\n    },\n\n    closeDialog() {\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\", \"close\").then((dialog) =>\n      // @ts-ignore\n        dialog.close()\n      )\n      this.superReset()\n    },\n\n    close() {\n      if (Util.isSet(this.progress)) {\n        this.finishProgress()\n      } else {\n        this.closeDialog()\n      }\n    },\n\n    isSet(val: any): boolean {\n      return Util.isSet(val)\n    },\n  },\n})\n</script>\n<template>\n  <ActionDialog\n    v-bind=\"$attrs\"\n    :title=\"title || ''\"\n    :description=\"description || ''\"\n    :show-buttons=\"false\"\n    :max-width=\"maxWidth\"\n    custom-class=\"action-dialog-loading\"\n    data-test-id=\"action-dialog-loading\"\n    ref=\"dialog\"\n  >\n    <template #description>\n      <span\n        v-if=\"byline\"\n        class=\"progress-byline\"\n      >\n        {{ byline }}\n      </span>\n\n      <VProgressLinear\n        v-model=\"progress\"\n        v-if=\"isSet(progress)\"\n        rounded\n        color=\"secondary\"\n        height=\"8\"\n      ></VProgressLinear>\n\n      <VProgressLinear\n        v-else\n        indeterminate\n        rounded\n        color=\"secondary\"\n        height=\"8\"\n      ></VProgressLinear>\n    </template>\n  </ActionDialog>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoadingDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LoadingDialog.vue?vue&type=template&id=a9380a9a&scoped=true\"\nimport script from \"./LoadingDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./LoadingDialog.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  \"a9380a9a\",\n  null\n  \n)\n\nexport default component.exports","import { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ActionDialog',_vm._b({ref:\"dialog\",attrs:{\"title\":_vm.title || '',\"description\":_vm.description || '',\"show-buttons\":false,\"max-width\":_vm.maxWidth,\"custom-class\":\"action-dialog-loading\",\"data-test-id\":\"action-dialog-loading\"},scopedSlots:_vm._u([{key:\"description\",fn:function(){return [(_vm.byline)?_c('span',{staticClass:\"progress-byline\"},[_vm._v(\"\\n      \"+_vm._s(_vm.byline)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),(_vm.isSet(_vm.progress))?_c(VProgressLinear,{attrs:{\"rounded\":\"\",\"color\":\"secondary\",\"height\":\"8\"},model:{value:(_vm.progress),callback:function ($$v) {_vm.progress=$$v},expression:\"progress\"}}):_c(VProgressLinear,{attrs:{\"indeterminate\":\"\",\"rounded\":\"\",\"color\":\"secondary\",\"height\":\"8\"}})]},proxy:true}])},'ActionDialog',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport { actionDialogMixin } from \"@/mixins\"\n\nimport VueHelper from \"@/modules/utils/vuehelper\"\nimport { _ } from \"@/modules/utils/localehelpers\"\n\nimport {\n  ActionDialog,\n} from \"@/components\"\n\nexport default defineComponent({\n  name: \"SuccessDialog\",\n\n  components: {\n    ActionDialog,\n  },\n\n  mixins: [ actionDialogMixin ],\n\n  inheritAttrs: false,\n\n  methods: {\n    open(title: string, description: string) {\n      const text = title ? title : _(\"Success\")\n\n      this.superOpen(text, description)\n\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\").then((dialog) => dialog.open())\n\n      setTimeout(() => this.close(), 1100)\n    },\n\n    close() {\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dialog\", \"close\").then((dialog) =>\n      // @ts-ignore\n        dialog.close()\n      )\n\n      this.superReset()\n    },\n  },\n})\n</script>\n<template>\n  <ActionDialog\n    v-bind=\"$attrs\"\n    :title=\"title || ''\"\n    :description=\"description || ''\"\n    :show-buttons=\"false\"\n    data-test-id=\"action-dialog-success\"\n    ref=\"dialog\"\n  >\n    <template #icon>\n      <div class=\"icon-wrapper mt-10\">\n        <FontAwesomeIcon icon=\"fas fa-check\">\n        </FontAwesomeIcon>\n      </div>\n    </template>\n  </ActionDialog>\n</template>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuccessDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SuccessDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SuccessDialog.vue?vue&type=template&id=314ad7d8\"\nimport script from \"./SuccessDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./SuccessDialog.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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ActionDialog',_vm._b({ref:\"dialog\",attrs:{\"title\":_vm.title || '',\"description\":_vm.description || '',\"show-buttons\":false,\"data-test-id\":\"action-dialog-success\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticClass:\"icon-wrapper mt-10\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fas fa-check\"}})],1)]},proxy:true}])},'ActionDialog',_vm.$attrs,false))\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, PropType } from \"vue\"\n\nimport { _ } from \"@/modules/utils/localehelpers\"\nimport Util from \"@/modules/utils/util\"\nimport Locale from \"@/modules/utils/locales\"\n\nimport {\n  PbTooltip,\n} from \"@/components\"\n\nimport {\n  TenantUser,\n} from \"@/types\"\n\n/* eslint-disable no-unused-vars */\nenum Group {\n  Sales = \"sales\",\n  POS = \"pos\",\n  Purchase = \"purchase\",\n  Product = \"product\",\n  Accounting = \"accounting\",\n  Events = \"events\",\n  Connection = \"connection\",\n  UI = \"ui\",\n  User = \"user\",\n  Tools = \"fileimport\",\n  Customer = \"customer\",\n  Stats = \"stats\",\n  File = \"file\",\n  Misc = \"misc\",\n}\n/* eslint-enable no-unused-vars */\n\n/* eslint-disable no-unused-vars */\nenum SidebarItemGroup {\n  Order = \"order\",\n  Invoice = \"invoice\",\n  Payment = \"payment\",\n  PaymentMethod = \"paymentmethod\",\n  CashRegister = \"cashregister\",\n  ZReport = \"zreport\",\n  SupplierInvoice = \"supplierinvoice\",\n  Product = \"product\",\n  ProductCategory = \"productcategory\",\n  Pricelist = \"pricelist\",\n  Attribute = \"attribute\",\n  ContentGroup = \"contentgroup\",\n  LedgerEntry = \"accounting.ledgerentry\",\n  LedgerAccount = \"accounting.ledgeraccount\",\n  SettlementReport = \"settlementreport\",\n  FileImport = \"fileimport.import\",\n  FileExport = \"fileimport.export\",\n  Log = \"log\",\n  Connection = \"connection\",\n  Customer = \"customer\",\n  UI = \"ui\",\n  Scheduling = \"ui.scheduling\",\n  Stats = \"stats\",\n  File = \"file\",\n  User = \"user\",\n}\n/* eslint-enable no-unused-vars */\n\ntype GetGroupedType = Record<Group, GetGroupedObjType[]>\n\ninterface GetGroupedObjType {\n  group: Group,\n  permissions: string[],\n  text: string\n}\n\ntype PreDefinedGroup = { group: Group, text: string }\ntype PreDefinedGroups = Record<SidebarItemGroup, PreDefinedGroup>\n\ninterface State {\n  groups: Record<Group, string>,\n  preDefinedGroups: PreDefinedGroups,\n  miscGroup: PreDefinedGroup\n}\n\nexport default defineComponent({\n  name: \"UserPermsAndAntiList\",\n\n  components: {\n    PbTooltip,\n  },\n\n  props: {\n    availablePermissions: Array as PropType<string[]>,\n\n    user: Object as PropType<TenantUser>,\n  },\n\n  data: (): State => ({\n    groups: {\n      [Group.Sales]: _(\"Sales\"),\n      [Group.POS]: _(\"POS\"),\n      [Group.Purchase]: _(\"Purchase\"),\n      [Group.Product]: _(\"Product\"),\n      [Group.Accounting]: _(\"Accounting\"),\n      [Group.Tools]: _(\"Tools\"),\n      [Group.Events]: _(\"Events\"),\n      [Group.Connection]: _(\"Connection\"),\n      [Group.UI]: _(\"UI\"),\n      [Group.User]: _(\"User\"),\n      [Group.Stats]: _(\"stats\"),\n      [Group.Customer]: _(\"customer\"),\n      [Group.File]: _(\"File\"),\n      [Group.Misc]: _(\"Misc\"),\n    },\n\n    preDefinedGroups: {\n      // Sales\n      [SidebarItemGroup.Order]: {\n        group: Group.Sales,\n        text: _(\"Order\"),\n      },\n      [SidebarItemGroup.Invoice]: {\n        group: Group.Sales,\n        text: _(\"Invoice\"),\n      },\n      // Payment\n      [SidebarItemGroup.Payment]: {\n        group: Group.Sales,\n        text: _(\"Payment\"),\n      },\n      [SidebarItemGroup.PaymentMethod]: {\n        group: Group.Sales,\n        text: _(\"PaymentMethod\"),\n      },\n      // POS\n      [SidebarItemGroup.CashRegister]: {\n        group: Group.POS,\n        text: _(\"CashRegister\"),\n      },\n      [SidebarItemGroup.ZReport]: {\n        group: Group.POS,\n        text: _(\"zreport\"),\n      },\n      // Purchase\n      [SidebarItemGroup.SupplierInvoice]: {\n        group: Group.Purchase,\n        text: _(\"SupplierInvoice\"),\n      },\n      // Product\n      [SidebarItemGroup.Product]: {\n        group: Group.Product,\n        text: _(\"Product\"),\n      },\n      [SidebarItemGroup.ProductCategory]: {\n        group: Group.Product,\n        text: _(\"Productcategory\"),\n      },\n      [SidebarItemGroup.Pricelist]: {\n        group: Group.Product,\n        text: _(\"Pricelist\"),\n      },\n      [SidebarItemGroup.Attribute]: {\n        group: Group.Product,\n        text: _(\"Attribute\"),\n      },\n      [SidebarItemGroup.ContentGroup]: {\n        group: Group.Product,\n        text: _(\"Content_Group\"),\n      },\n      // Accounting\n      [SidebarItemGroup.LedgerEntry]: {\n        group: Group.Accounting,\n        text: _(\"ledgerentry\"),\n      },\n      [SidebarItemGroup.LedgerAccount]: {\n        group: Group.Accounting,\n        text: _(\"ledgeraccount\"),\n      },\n      [SidebarItemGroup.SettlementReport]: {\n        group: Group.Accounting,\n        text: _(\"SettlementReport\"),\n      },\n      // Tools\n      [SidebarItemGroup.FileImport]: {\n        group: Group.Tools,\n        text: _(\"fileimport\"),\n      },\n      [SidebarItemGroup.FileExport]: {\n        group: Group.Tools,\n        text: _(\"fileexport\"),\n      },\n      // Log\n      [SidebarItemGroup.Log]: {\n        group: Group.Events,\n        text: _(\"Events\"),\n      },\n      // Connection\n      [SidebarItemGroup.Connection]: {\n        group: Group.Connection,\n        text: _(\"Connection\"),\n      },\n      // UI\n      [SidebarItemGroup.UI]: {\n        group: Group.UI,\n        text: _(\"UI\"),\n      },\n      [SidebarItemGroup.Scheduling]: {\n        group: Group.UI,\n        text: _(\"Scheduling\"),\n      },\n      [SidebarItemGroup.User]: {\n        group: Group.User,\n        text: _(\"User\"),\n      },\n      [SidebarItemGroup.Stats]: {\n        group: Group.Stats,\n        text: _(\"stats\"),\n      },\n      [SidebarItemGroup.Customer]: {\n        group: Group.Customer,\n        text: _(\"customer\"),\n      },\n      [SidebarItemGroup.File]: {\n        group: Group.File,\n        text: _(\"File\"),\n      },\n    },\n\n    miscGroup: {\n      group: Group.Misc,\n      text: _(\"Misc\"),\n    },\n  }),\n\n  computed: {\n    isSuperUser() {\n      return (this.user?.permissions || []).includes(\"superuser\")\n    },\n\n    getGrouped(): GetGroupedType {\n      const ordering: Group[] = [\n        Group.Sales,\n        Group.POS,\n        Group.Purchase,\n        Group.Product,\n        Group.Accounting,\n        Group.Tools,\n        Group.Events,\n        Group.Connection,\n        Group.UI,\n        Group.User,\n        Group.Stats,\n        Group.Customer,\n        Group.File,\n        Group.Misc,\n      ]\n\n      const permGroups: Record<Group, string[]> = this.allPermissions\n        .reduce((a, b) => {\n          const group = b.split(\".\")[0]\n\n          if (group) {\n            let key = (group as Group)\n\n            if (key in a) {\n              a[key].push(b)\n            }\n            else {\n              a[key] = [ b ]\n            }\n          }\n\n          return a\n        }, ({} as Record<Group, string[]>))\n\n      const sidebarItemGroups: Record<SidebarItemGroup, string[]> = Object.entries(permGroups)\n        .reduce((a, b) => {\n          const group = b[0]\n          const permissions = b[1]\n\n          if (group === Group.Accounting) {\n            let ledgerEntry = permissions.filter((p) =>\n              p.includes(\"ledgerentry\")\n            )\n\n            let ledgerAccount = permissions.filter((p) =>\n              p.includes(\"ledgeraccount\")\n            )\n\n            a[SidebarItemGroup.LedgerEntry] = ledgerEntry\n            a[SidebarItemGroup.LedgerAccount] = ledgerAccount\n          }\n          else if (group === Group.Tools) {\n            const importPerms = permissions\n              .filter(p => p.includes(\".import\"))\n            const exportPerms = permissions\n              .filter(p => p.includes(\".export\"))\n              .filter(p => !importPerms.some(sp => sp === p))\n\n            a[SidebarItemGroup.FileImport] = importPerms\n            a[SidebarItemGroup.FileExport] = exportPerms\n          }\n          else if (group === Group.UI) {\n            const scheduling = permissions\n              .filter(p => p.includes(\"ui.scheduling\"))\n            const uiPerms = permissions\n              .filter(p => p.includes(\"ui.\"))\n              .filter(p => !scheduling.some(sp => sp === p))\n\n            a[SidebarItemGroup.Scheduling] = scheduling\n            a[SidebarItemGroup.UI] = uiPerms\n          }\n          else {\n            let key = (group as SidebarItemGroup)\n\n            a[key] = permissions\n          }\n\n          return a\n        }, ({} as Record<SidebarItemGroup, string[]>))\n\n      const sortedSidebarItemGroups = Object\n        .entries(sidebarItemGroups)\n        .sort(([ groupA ], [ groupB ]) => {\n          const getGroup = (key: string, obj: PreDefinedGroups): Group => {\n            if (key in obj) {\n              const strKey = (key as SidebarItemGroup)\n              return obj[strKey].group\n            }\n            else {\n              return Group.Misc\n            }\n          }\n\n          const indexA = ordering.indexOf(getGroup(groupA, this.preDefinedGroups))\n          const indexB = ordering.indexOf(getGroup(groupB, this.preDefinedGroups))\n\n          return indexA - indexB\n        })\n\n      const mappedGroups: GetGroupedType = sortedSidebarItemGroups\n        .reduce((a, [ group, permissions ]) => {\n          const getPreDefinedGroup = (key: string, obj: PreDefinedGroups): PreDefinedGroup | undefined => {\n            if (key in obj) {\n              const strKey = (key as SidebarItemGroup)\n              return obj[strKey]\n            }\n            else {\n              return undefined\n            }\n          }\n\n          const getGroup = (key: string, obj: PreDefinedGroups): Group => {\n            const group = getPreDefinedGroup(key, obj)\n\n            if (group) return group.group\n            else return Group.Misc\n          }\n\n          let preDef = getPreDefinedGroup(group, this.preDefinedGroups)\n          const groupKey = getGroup(group, this.preDefinedGroups)\n\n          if (preDef && groupKey in a) {\n            a[preDef.group].push({\n              group: groupKey,\n              permissions,\n              text: preDef.text,\n            })\n          }\n          else if (preDef) {\n            a[groupKey] = [\n              {\n                group: groupKey,\n                permissions,\n                text: preDef.text,\n              },\n            ]\n          }\n          else if (groupKey in a) {\n            if (Array.isArray(a[groupKey]) && a[groupKey].length > 0) {\n              if (Array.isArray(a[groupKey][0]!.permissions)) {\n                a[groupKey][0]!.permissions.push(...permissions)\n              }\n            }\n          }\n          else {\n            a[groupKey] = [\n              {\n                group: groupKey,\n                permissions,\n                text: this.miscGroup.text,\n              },\n            ]\n          }\n\n          return a\n        }, ({} as GetGroupedType))\n\n      return mappedGroups\n    },\n\n    allPermissions() {\n      return (this.availablePermissions || []).filter(\n        (p) => p !== \"superuser\"\n      )\n    },\n\n    permissions() {\n      return this.user?.permissions || []\n    },\n\n    antiPermissions() {\n      return this.user?.antiPermissions || []\n    },\n\n    isViewOnlyActivated() {\n      const viewPermissions = this.allPermissions\n        .filter((p) => p.includes(\"view\"))\n        .sort()\n\n      const notViewPermissions = this.allPermissions\n        .filter((p) => !p.includes(\"view\"))\n        .sort()\n\n      if (this.isSuperUser) {\n        const clone = Util.deepClone(this.antiPermissions)\n\n        return (\n          JSON.stringify(clone.sort()) ===\n            JSON.stringify(notViewPermissions)\n        )\n      } else {\n        const clone = Util.deepClone(this.permissions)\n\n        return (\n          JSON.stringify(clone.sort()) ===\n            JSON.stringify(viewPermissions)\n        )\n      }\n    },\n  },\n\n  methods: {\n    capitalize(val: string): string {\n      return Locale.capitalize(val)\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n\n    sortGroupedPermissions(group: string[]): string[] {\n      return group.sort((a, b) => {\n        if (a.includes(\"view\") && !b.includes(\"view\")) return -1\n        if (!a.includes(\"view\") && b.includes(\"view\")) return 1\n\n        if (a.includes(\"edit\") && b.includes(\"edit\")) return 0\n        if (a.includes(\"edit\") && !b.includes(\"edit\")) return -1\n        if (!a.includes(\"edit\") && b.includes(\"edit\")) return 1\n\n        return 0\n      })\n    },\n\n    getPermissionText(permission: string): string {\n      const parts = permission.split(\".\")\n\n      if (Locale.translate(permission) !== permission) return Locale.translate(permission)\n\n      const lastPart = parts[parts.length - 1]\n\n      if (permission !== Locale.translate(permission)) return Locale.translate(permission)\n\n      if (lastPart) {\n        return _(this.capitalize(lastPart))\n      }\n\n      return \"\"\n    },\n\n    setSuperUser(bool: boolean) {\n      if (!this.user) return\n\n      let permissions = this.user.permissions\n      let antiPermissions = this.user.antiPermissions\n\n      if (bool) {\n        permissions = [ \"superuser\" ]\n        antiPermissions = []\n      } else {\n        permissions = []\n        antiPermissions = []\n      }\n\n      this.$emit(\"change\", {\n        permissions: permissions,\n        antiPermissions: antiPermissions,\n      })\n    },\n\n    changePermission(permission: string) {\n      if (!this.user) return\n\n      let permissions = this.user.permissions\n      let antiPermissions = this.user.antiPermissions\n\n      if (this.isSuperUser) {\n        if (!Array.isArray(antiPermissions)) {\n          antiPermissions = []\n        }\n\n        if (antiPermissions.includes(permission)) {\n          const index = antiPermissions.indexOf(permission)\n          antiPermissions.splice(index, 1)\n        } else {\n          antiPermissions.push(permission)\n        }\n      } else {\n        if (!Array.isArray(permissions)) {\n          permissions = []\n        }\n\n        if (permissions.includes(permission)) {\n          const index = permissions.indexOf(permission)\n          permissions.splice(index, 1)\n        } else {\n          permissions.push(permission)\n        }\n      }\n\n      this.$emit(\"change\", {\n        permissions: permissions,\n        antiPermissions: antiPermissions,\n      })\n    },\n\n    isPermissionActive(permission: string): boolean {\n      if (this.isSuperUser) {\n        return !this.antiPermissions.includes(permission)\n      } else {\n        return this.permissions.includes(permission)\n      }\n    },\n\n    setViewOnly() {\n      if (!this.user) return\n\n      let permissions = this.user.permissions\n      let antiPermissions = this.user.antiPermissions\n\n      const viewPermissions = this.allPermissions.filter((p) =>\n        p.includes(\"view\")\n      )\n\n      const notViewPermissions = this.allPermissions.filter(\n        (p) => !p.includes(\"view\")\n      )\n\n      if (this.isSuperUser) {\n        if (this.isViewOnlyActivated) {\n          antiPermissions = []\n        } else {\n          antiPermissions = notViewPermissions\n        }\n      } else {\n        if (this.isViewOnlyActivated) {\n          permissions = []\n        } else {\n          permissions = viewPermissions\n        }\n      }\n\n      this.$emit(\"change\", {\n        permissions: permissions,\n        antiPermissions: antiPermissions,\n      })\n    },\n  },\n})\n</script>\n<template>\n  <VRow\n    v-if=\"getGrouped\"\n    class=\"mt-0\"\n  >\n    <VCol\n      :cols=\"12\"\n      class=\"mt-2\"\n    >\n      <div class=\"permission-list\">\n        <div class=\"super-user-wrapper\">\n          <div>\n            <span class=\"title-label\">\n              {{ _(\"Superuser\") }}\n            </span>\n            <span class=\"byline-label\">\n              {{ _(\"Superuser_desc\") }}\n            </span>\n          </div>\n          <VSpacer></VSpacer>\n          <VSwitch\n            :value=\"isSuperUser\"\n            :input-value=\"isSuperUser\"\n            @change=\"setSuperUser\"\n            hide-details\n            color=\"secondary\"\n          >\n          </VSwitch>\n        </div>\n        <span class=\"permission-list-header top-header\">\n          <span>\n            {{ _(\"Permissions\") }}\n          </span>\n          <VSpacer></VSpacer>\n          <VSwitch\n            :value=\"isViewOnlyActivated\"\n            :input-value=\"isViewOnlyActivated\"\n            :label=\"_('View_only')\"\n            @click=\"setViewOnly()\"\n            hide-details\n            dense\n          >\n          </VSwitch>\n        </span>\n\n        <template v-for=\"(group, groupName) in getGrouped\">\n          <span\n            :class=\"{ 'is-super-user': isSuperUser }\"\n            class=\"d-flex flex-col gap-2\"\n            :key=\"groupName\"\n          >\n            <span\n              v-if=\"preDefinedGroups\"\n              class=\"permission-list-header\"\n            >\n              <span>\n                {{ groups[groupName] }}\n              </span>\n            </span>\n\n            <template v-for=\"(permission, index) in group\">\n              <span\n                class=\"permission-tile\"\n                :key=\"index\"\n              >\n                <span class=\"permission-title\">\n                  {{ permission.text }}\n                </span>\n\n                <div class=\"d-flex flex-wrap gap-2\">\n                  <template v-for=\"(perm, pIndex) in permission.permissions\">\n                    <PbTooltip\n                      :text=\"perm\"\n                      :open-delay=\"1000\"\n                      :key=\"pIndex\"\n                    >\n                      <template #activator=\"{ on }\">\n                        <VBtn\n                          :class=\"{ active: isPermissionActive(perm) }\"\n                          :data-test-id=\"perm\"\n                          v-on=\"on\"\n                          @click=\"changePermission(perm)\"\n                          depressed\n                          class=\"perm-btn\"\n                        >\n                          <span>{{ getPermissionText(perm) }}</span>\n                        </VBtn>\n                      </template>\n                    </PbTooltip>\n                  </template>\n                </div>\n              </span>\n            </template>\n          </span>\n        </template>\n      </div>\n    </VCol>\n  </VRow>\n</template>\n<style lang=\"scss\">\n.permission-list {\n  border: 1px solid var(--v-border-base);\n  background: var(--v-dialogBg-base);\n  border-radius: 6px;\n\n  .perm-btn {\n    color: var(--v-byline-base);\n    text-transform: none !important;\n    padding: 4px 10px !important;\n  }\n\n  .v-input--switch__track {\n    opacity: 0.3 !important;\n  }\n\n  .super-user-wrapper {\n    display: flex;\n    padding: 14px 16px;\n\n    svg {\n      color: var(--v-title-base);\n      font-size: 16px;\n    }\n\n    .title-label {\n      display: block;\n      color: var(--v-title-base);\n      font-weight: 500;\n      font-size: 15px;\n    }\n\n    .byline-label {\n      max-width: 340px;\n      display: block;\n      margin-top: 5px;\n      line-height: 1.4;\n    }\n  }\n\n  .permission-list-header {\n    background-color: var(--v-backgroundTableHeader-base);\n    border-top: 1px solid var(--v-border-base);\n    border-bottom: 1px solid var(--v-border-base);\n    font-weight: 500;\n    line-height: 1.4;\n    padding: 6px 16px;\n    font-size: 13px;\n    display: block;\n  }\n\n  .permission-list-header.top-header {\n    display: flex;\n    padding: 10px 16px;\n    font-size: 14px;\n    align-items: center;\n    font-weight: 600;\n  }\n\n  .permission-tile {\n    font-weight: 400;\n    font-size: 15px;\n    display: flex;\n    align-items: center;\n    padding: 8px 16px;\n    color: var(--v-title-base);\n    gap: 8px;\n\n    .permission-title {\n      min-width: 170px;\n      color: var(--v-byline-base);\n      font-weight: 500;\n      text-transform: capitalize;\n      font-size: 14px;\n    }\n\n    .groupheader {\n      margin-top: 0;\n    }\n\n    .v-input__slot {\n      margin-bottom: 0;\n\n      label {\n        font-weight: 500;\n        font-size: 15px;\n      }\n    }\n\n    .v-btn {\n      height: auto !important;\n      border-radius: 6px;\n      letter-spacing: 0.5px;\n      font-size: 13px;\n      padding: 5px 10px;\n      font-weight: 600 !important;\n      color: var(--v-byline-base);\n      text-transform: capitalize;\n    }\n\n    .v-input {\n      margin: 0 !important;\n      padding: 0 !important;\n    }\n\n    .v-btn.active {\n      background-color: var(--v-primary-base) !important;\n      color: white !important;\n    }\n  }\n\n  .permission-tile:not(:last-child) {\n    border-bottom: 1px solid var(--v-border-base) !important;\n  }\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserPermsAndAntiList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserPermsAndAntiList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserPermsAndAntiList.vue?vue&type=template&id=5ae65962\"\nimport script from \"./UserPermsAndAntiList.vue?vue&type=script&lang=ts\"\nexport * from \"./UserPermsAndAntiList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./UserPermsAndAntiList.vue?vue&type=style&index=0&id=5ae65962&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 { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.getGrouped)?_c(VRow,{staticClass:\"mt-0\"},[_c(VCol,{staticClass:\"mt-2\",attrs:{\"cols\":12}},[_c('div',{staticClass:\"permission-list\"},[_c('div',{staticClass:\"super-user-wrapper\"},[_c('div',[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n            \"+_vm._s(_vm._(\"Superuser\"))+\"\\n          \")]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"},[_vm._v(\"\\n            \"+_vm._s(_vm._(\"Superuser_desc\"))+\"\\n          \")])]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c(VSwitch,{attrs:{\"value\":_vm.isSuperUser,\"input-value\":_vm.isSuperUser,\"hide-details\":\"\",\"color\":\"secondary\"},on:{\"change\":_vm.setSuperUser}})],1),_vm._v(\" \"),_c('span',{staticClass:\"permission-list-header top-header\"},[_c('span',[_vm._v(\"\\n          \"+_vm._s(_vm._(\"Permissions\"))+\"\\n        \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c(VSwitch,{attrs:{\"value\":_vm.isViewOnlyActivated,\"input-value\":_vm.isViewOnlyActivated,\"label\":_vm._('View_only'),\"hide-details\":\"\",\"dense\":\"\"},on:{\"click\":function($event){return _vm.setViewOnly()}}})],1),_vm._v(\" \"),_vm._l((_vm.getGrouped),function(group,groupName){return [_c('span',{key:groupName,staticClass:\"d-flex flex-col gap-2\",class:{ 'is-super-user': _vm.isSuperUser }},[(_vm.preDefinedGroups)?_c('span',{staticClass:\"permission-list-header\"},[_c('span',[_vm._v(\"\\n              \"+_vm._s(_vm.groups[groupName])+\"\\n            \")])]):_vm._e(),_vm._v(\" \"),_vm._l((group),function(permission,index){return [_c('span',{key:index,staticClass:\"permission-tile\"},[_c('span',{staticClass:\"permission-title\"},[_vm._v(\"\\n                \"+_vm._s(permission.text)+\"\\n              \")]),_vm._v(\" \"),_c('div',{staticClass:\"d-flex flex-wrap gap-2\"},[_vm._l((permission.permissions),function(perm,pIndex){return [_c('PbTooltip',{key:pIndex,attrs:{\"text\":perm,\"open-delay\":1000},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({staticClass:\"perm-btn\",class:{ active: _vm.isPermissionActive(perm) },attrs:{\"data-test-id\":perm,\"depressed\":\"\"},on:{\"click\":function($event){return _vm.changePermission(perm)}}},on),[_c('span',[_vm._v(_vm._s(_vm.getPermissionText(perm)))])])]}}],null,true)})]})],2)])]})],2)]})],2)])],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\n\nexport default {\n}\n</script>\n<template>\n  <VMain>\n    <slot></slot>\n  </VMain>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoggedOutContent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoggedOutContent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LoggedOutContent.vue?vue&type=template&id=7f7f7c30&scoped=true\"\nimport script from \"./LoggedOutContent.vue?vue&type=script&lang=ts\"\nexport * from \"./LoggedOutContent.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  \"7f7f7c30\",\n  null\n  \n)\n\nexport default component.exports","import { VMain } from 'vuetify/lib/components/VMain';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c;return _c(VMain,[_vm._t(\"default\")],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { mapActions, mapGetters } from \"vuex\"\n\nimport { defineComponent } from \"vue\"\n\nimport {\n  controlMixin,\n} from \"@/mixins\"\n\nimport Util from \"@/modules/utils/util\"\nimport Locale from \"@/modules/utils/locales\"\n\nimport Stats from \"@/modules/managers/stats\"\n\nimport BuildInfo from \"@/modules/injected-js-handlers/buildInfo\"\nimport ResellerUser from \"@/modules/injected-js-handlers/reseller-user\"\nimport Reseller from \"@/modules/injected-js-handlers/reseller\"\n\nimport {\n  LogoutBtn,\n  SidebarMenuItem,\n  SuccessDialog,\n  ErrorDialog,\n  DeleteDialog,\n  LoadingDialog,\n  ConfirmDialog,\n  InfoDialog,\n} from \"@/components\"\n\ninterface State {\n  drawer: boolean,\n  userAvatarUrl: string | null\n  tenantsWithIssues: boolean,\n  tenantsWithIssuesCount: number\n}\n\nexport default defineComponent({\n  name: \"LoggedInContent\",\n\n  components: {\n    LogoutBtn,\n    SidebarMenuItem,\n    SuccessDialog,\n    ErrorDialog,\n    DeleteDialog,\n    LoadingDialog,\n    ConfirmDialog,\n    InfoDialog,\n  },\n\n  mixins: [\n    controlMixin,\n  ],\n\n  data: (): State => ({\n    drawer: true,\n    userAvatarUrl: null,\n    tenantsWithIssues: false,\n    tenantsWithIssuesCount: 0,\n  }),\n\n  computed: {\n    ...mapGetters({\n      mini: \"sidebar/mini\",\n    }),\n\n    globalNotice() {\n      // @ts-ignore\n      return window._globalnotice\n    },\n\n    isFortnoxWL() {\n      return Reseller.defaultWhiteLabel() === \"fortnox\"\n    },\n\n    isTestMode() {\n      return BuildInfo.isTestMode()\n    },\n\n    siteName() {\n      return BuildInfo.siteName()\n    },\n\n    versionNumber() {\n      return BuildInfo.versionNumber()\n    },\n\n    buildNumber() {\n      return BuildInfo.buildNumber()\n    },\n\n    backendName() {\n      return BuildInfo.backendName()\n    },\n\n    isDarkMode() {\n      return this.$vuetify.theme.dark\n    },\n\n    fullName() {\n      return ResellerUser.fullName()\n    },\n\n    email() {\n      return ResellerUser.email()\n    },\n  },\n\n  mounted() {\n    this.setupTheme()\n\n    const label = Reseller.defaultWhiteLabel()\n\n    if (label) {\n      document.querySelector(\"html\")\n        ?.classList.add(`${label}-branding`)\n    }\n\n    if (this.hasStatsPerm) {\n      this.checkTenantIssues()\n    }\n  },\n\n  methods: {\n    ...mapActions({\n      changeMini: \"sidebar/changeMini\",\n    }),\n\n    checkTenantIssues() {\n      localStorage.setItem(\"tenantsWithIssuesCount\", String(0))\n\n      Stats.tenantsWithIssues()\n        .then(count => {\n          this.tenantsWithIssuesCount = count\n          this.tenantsWithIssues = count > 0\n          localStorage.setItem(\"tenantsWithIssuesCount\", String(count))\n        })\n    },\n\n    toggleTheme(dark: boolean) {\n      if (dark) {\n        localStorage.setItem(\"theme\", \"dark\")\n        this.$vuetify.theme.dark = true\n      } else {\n        localStorage.setItem(\"theme\", \"light\")\n        this.$vuetify.theme.dark = false\n      }\n    },\n\n    isNonEmptyText(text: any): boolean {\n      return Util.isNonEmptyText(text)\n    },\n\n    setupTheme() {\n      let osPreferDark =\n          window.matchMedia(\"(prefers-color-scheme: dark)\")?.matches || false\n      let theme = localStorage.getItem(\"theme\")\n\n      if (Util.isSet(theme)) {\n        if (theme === \"dark\") {\n          this.$vuetify.theme.dark = true\n        } else {\n          this.$vuetify.theme.dark = false\n        }\n      } else if (osPreferDark) {\n        this.$vuetify.theme.dark = true\n      }\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n</script>\n<template>\n  <VMain :class=\"{ pushright: !mini, globalnotification: isNonEmptyText(globalNotice) }\">\n    <VAppBar\n      clipped-left\n      fixed\n      light\n      flat\n      class=\"pb-top-toolbar default\"\n    >\n      <div\n        v-if=\"globalNotice\"\n        class=\"global-notification-banner\"\n      >\n        <VIcon small>fa-solid fa-circle-exclamation</VIcon>\n        {{ globalNotice }}\n      </div>\n      <div class=\"header-content\">\n        <template v-if=\"isFortnoxWL\">\n          <div\n            v-show=\"!isDarkMode\"\n            class=\"logo-fortnox-wl\"\n          >\n            <img\n              data-test-id=\"logo-plugboard\"\n              src=\"/public/assets/images/logo-connector-fortnox-wl.png\"\n              class=\"sidenav-logo\"\n            />\n            <span class=\"logo-title\">\n              {{ _('Integrations') }}\n            </span>\n          </div>\n          <div\n            v-show=\"isDarkMode\"\n            class=\"logo-fortnox-wl\"\n          >\n            <img\n              data-test-id=\"logo-plugboard\"\n              src=\"/public/assets/images/logo-connector-fortnox-inverted-wl.png\"\n              class=\"sidenav-logo\"\n            />\n            <span class=\"logo-title\">\n              {{ _('Integrations') }}\n            </span>\n          </div>\n        </template>\n\n        <template v-else>\n          <img\n            v-show=\"!isDarkMode\"\n            data-test-id=\"logo-plugboard\"\n            src=\"/public/assets/images/logo-partnerportal.svg\"\n            class=\"sidenav-logo\"\n          />\n          <img\n            v-show=\"isDarkMode\"\n            data-test-id=\"logo-plugboard\"\n            src=\"/public/assets/images/logo-partnerportal-inverted.svg\"\n            class=\"sidenav-logo\"\n          />\n        </template>\n\n        <VSpacer></VSpacer>\n\n        <div\n          v-if=\"hasStatsPerm && tenantsWithIssuesCount > 0\"\n          class=\"issue-tracker-banner\"\n        >\n          <VBtn\n            href=\"/issues/\"\n            class=\"issue-tracker-banner-content\"\n          >\n            <VIcon>fa-regular fa-circle-exclamation</VIcon>\n            <span>\n              {{ _(\"Issue_tracker_banner_prefix\") }}\n              <span class=\"issue-count-number\">\n                {{ tenantsWithIssuesCount }}\n              </span>\n              <template v-if=\"tenantsWithIssuesCount < 2\">\n                {{ _(\"Issue_tracker_banner_suffix_singular\") }}\n              </template>\n              <template v-else>\n                {{ _(\"Issue_tracker_banner_suffix\") }}\n              </template>\n            </span>\n            <VSpacer></VSpacer>\n            <VIcon>fa-solid fa-arrow-right</VIcon>\n          </VBtn>\n        </div>\n\n        <VSpacer></VSpacer>\n\n        <div class=\"btn-switch-wrapper\">\n          <VBtn\n            :class=\"{ active: !isDarkMode }\"\n            @click=\"toggleTheme(false)\"\n            depressed\n            data-test-id=\"toggle-theme-light\"\n          >\n            <FontAwesomeIcon\n              icon=\"fas fa-sun-bright\"\n              color=\"grey\"\n            >\n            </FontAwesomeIcon>\n          </VBtn>\n          <VBtn\n            :class=\"{ active: isDarkMode }\"\n            @click=\"toggleTheme(true)\"\n            depressed\n            data-test-id=\"toggle-theme-dark\"\n          >\n            <FontAwesomeIcon\n              icon=\"fa-solid fa-moon\"\n              color=\"grey\"\n            >\n            </FontAwesomeIcon>\n          </VBtn>\n        </div>\n\n        <VMenu\n          :nudge-width=\"200\"\n          offset-y\n        >\n          <template #activator=\"{ on }\">\n            <VAvatar\n              v-on=\"on\"\n              size=\"42\"\n              data-test-id=\"avatar-btn\"\n            >\n              <FontAwesomeIcon\n                icon=\"fa-regular fa-circle-user\"\n                color=\"grey\"\n              >\n              </FontAwesomeIcon>\n            </VAvatar>\n          </template>\n\n          <VCard>\n            <VList>\n              <VListItem>\n                <VListItemContent>\n                  <VListItemTitle>\n                    <span data-selenium=\"reseller-full-name\">\n                      {{ fullName }}\n                    </span>\n                  </VListItemTitle>\n                  <VListItemSubtitle>\n                    {{ email }}\n                  </VListItemSubtitle>\n                </VListItemContent>\n              </VListItem>\n            </VList>\n            <VDivider class=\"my-0\"></VDivider>\n            <span\n              v-if=\"isTestMode\"\n              data-test-id=\"test-env-banner\"\n            >\n              <span\n                class=\"instans-test\"\n              >\n                TESTMILJÖ\n              </span>\n            </span>\n            <div class=\"instans-info\">\n              <span v-if=\"isTestMode\">\n                <span class=\"instans-type\">Site:</span>\n                <span data-test-id=\"site-name\">{{ siteName }}</span>\n              </span>\n              <span class=\"instans-type\">V:</span>\n              <span data-test-id=\"version-number\">{{ versionNumber }}</span>\n              <span class=\"instans-type\">B:</span>\n              <span data-test-id=\"build-number\">{{ buildNumber }}</span>\n              <span v-if=\"backendName !== ''\">\n                <span class=\"instans-type\">BE:</span>\n                <span\n                  data-test-id=\"backend-name\"\n                  class=\"backendName\"\n                >\n                  {{ backendName }}\n                </span>\n              </span>\n            </div>\n\n            <VDivider class=\"my-0\"></VDivider>\n\n            <VCardActions>\n              <VSpacer></VSpacer>\n              <LogoutBtn\n                data-test-id=\"logout-button\"\n              >\n              </LogoutBtn>\n            </VCardActions>\n          </VCard>\n        </VMenu>\n      </div>\n    </VAppBar>\n\n    <VNavigationDrawer\n      v-model=\"drawer\"\n      :mini-variant=\"mini\"\n      hide-overlay\n      stateless\n      fixed\n      dark\n      class=\"sidenav\"\n    >\n      <VList>\n        <SidebarMenuItem\n          data-cy=\"sidebar-item-home\"\n          class=\"sidenav-menu-item\"\n          href=\"/\"\n        >\n          <VListItemAction>\n            <FontAwesomeIcon\n              icon=\"far fa-house\"\n              color=\"grey\"\n            >\n            </FontAwesomeIcon>\n          </VListItemAction>\n          <VListItemTitle>\n            {{ _(\"Home\") }}\n          </VListItemTitle>\n        </SidebarMenuItem>\n\n        <SidebarMenuItem\n          v-if=\"hasTenantViewPerm\"\n          data-cy=\"sidebar-item-tenants\"\n          class=\"sidenav-menu-item\"\n          href=\"/tenants/\"\n        >\n          <VListItemAction>\n            <FontAwesomeIcon\n              icon=\"far fa-users\"\n              color=\"grey\"\n            >\n            </FontAwesomeIcon>\n          </VListItemAction>\n          <VListItemTitle>\n            {{ _(\"Tenants\") }}\n          </VListItemTitle>\n        </SidebarMenuItem>\n\n        <SidebarMenuItem\n          v-if=\"hasStatsPerm\"\n          data-cy=\"sidebar-item-analytics\"\n          class=\"sidenav-menu-item\"\n          href=\"/analytics/\"\n        >\n          <VListItemAction>\n            <FontAwesomeIcon\n              icon=\"far fa-gauge\"\n              color=\"grey\"\n            >\n            </FontAwesomeIcon>\n          </VListItemAction>\n          <VListItemTitle>\n            {{ _(\"Analytics\") }}\n          </VListItemTitle>\n        </SidebarMenuItem>\n\n        <SidebarMenuItem\n          v-if=\"hasStatsPerm\"\n          class=\"sidenav-menu-item\"\n          href=\"/issues/\"\n        >\n          <VListItemAction>\n            <VBadge\n              v-if=\"tenantsWithIssues\"\n              dot\n              location=\"top right\"\n              color=\"error\"\n            >\n              <FontAwesomeIcon\n                icon=\"far fa-radar\"\n                color=\"grey\"\n              >\n              </FontAwesomeIcon>\n            </VBadge>\n            <template v-else>\n              <FontAwesomeIcon\n                icon=\"far fa-radar\"\n                color=\"grey\"\n              >\n              </FontAwesomeIcon>\n            </template>\n          </VListItemAction>\n          <VListItemTitle\n            class=\"item-with-badge\"\n          >\n            {{ _(\"Tenant_issues\") }}\n          </VListItemTitle>\n        </SidebarMenuItem>\n      </VList>\n\n      <VList class=\"menu-list-bottom\">\n        <SidebarMenuItem\n          data-selenium=\"menu-support\"\n          class=\"sidenav-menu-item\"\n          href=\"/support/\"\n        >\n          <VListItemAction>\n            <FontAwesomeIcon\n              color=\"grey\"\n              icon=\"fa-regular fa-circle-question\"\n            >\n            </FontAwesomeIcon>\n          </VListItemAction>\n          <VListItemTitle>\n            {{ _('Help_center') }}\n          </VListItemTitle>\n        </SidebarMenuItem>\n\n        <SidebarMenuItem\n          href=\"/settings/\"\n          data-cy=\"sidebar-item-settings\"\n          class=\"sidenav-menu-item\"\n        >\n          <VListItemAction>\n            <FontAwesomeIcon\n              color=\"grey\"\n              icon=\"far fa-gear\"\n            >\n            </FontAwesomeIcon>\n          </VListItemAction>\n          <VListItemTitle>\n            {{ _(\"Settings\") }}\n          </VListItemTitle>\n        </SidebarMenuItem>\n\n        <VDivider class=\"mt-3\"></VDivider>\n\n        <VListItem\n          v-if=\"mini\"\n          @click.stop=\"changeMini(!mini)\"\n          class=\"chevron\"\n          data-cy=\"toggle-sidebar\"\n        >\n          <VListItemAction>\n            <FontAwesomeIcon\n              :icon=\"['fas', 'chevron-right']\"\n              color=\"grey\"\n            />\n          </VListItemAction>\n        </VListItem>\n\n        <VListItem\n          v-if=\"!mini\"\n          @click.stop=\"changeMini(!mini)\"\n          data-cy=\"toggle-sidebar\"\n        >\n          <VSpacer></VSpacer>\n          <VListItemAction class=\"action-right\">\n            <FontAwesomeIcon\n              :icon=\"['fas', 'chevron-left']\"\n              color=\"grey\"\n            />\n          </VListItemAction>\n        </VListItem>\n      </VList>\n    </VNavigationDrawer>\n\n    <slot></slot>\n\n    <ErrorDialog ref=\"errorDialog\"></ErrorDialog>\n    <ConfirmDialog ref=\"confirmDialog\"></ConfirmDialog>\n    <DeleteDialog ref=\"deleteDialog\"></DeleteDialog>\n    <SuccessDialog ref=\"successDialog\"></SuccessDialog>\n    <LoadingDialog ref=\"loadingDialog\"></LoadingDialog>\n    <InfoDialog ref=\"infoDialog\"></InfoDialog>\n  </VMain>\n</template>\n<style scoped lang=\"scss\">\n\n.logo-fortnox-wl {\n  display: flex;\n  gap: 10px;\n  align-items: center;\n\n  .sidenav-logo {\n    height: 34px !important;\n  }\n\n  .logo-title {\n    display: block;\n    width: auto;\n    color: var(--v-logoTitle-base);\n    font-weight: 600;\n    font-size: 15px;\n  }\n}\n\n.v-avatar {\n  svg {\n    width: 26px;\n    color: var(--v-title-base);\n  }\n}\n\n.v-content, .v-main {\n  padding-top: 64px !important;\n  padding-left: 80px !important;\n\n  &.globalnotification {\n    padding-top: 94px !important;\n\n    .sidenav {\n      padding-top: 102px;\n    }\n  }\n}\n\n.v-content.pushright {\n  padding-left: 250px !important;\n}\n\n.v-main.pushright {\n  padding-left: 250px !important;\n\n  :deep(.v-list-item__action) {\n    margin-right: 14px;\n  }\n}\n\n.issue-tracker-banner {\n  border: 1px solid #e8e1e1;\n  margin: 1.5em 0;\n  border-radius: 10px;\n  overflow: hidden;\n\n  .issue-tracker-banner-content {\n    display: flex;\n    padding: 0.2em;\n    align-items: center;\n    background: #fcf3f2;\n    text-transform: none;\n    letter-spacing: 0.2px;\n\n    .v-btn__content {\n      font-size: 0.9em;\n    }\n\n    .fa-circle-exclamation {\n      color: #b13e44;\n      padding: 0 8px 0 12px;\n      font-size: 18px !important;\n    }\n\n    .issue-count-number {\n      font-weight: 700;\n    }\n\n    .fa-arrow-right {\n      width: 10px;\n      opacity: 0.4;\n      margin: 0 8px;\n    }\n  }\n}\n\n.pb-top-toolbar {\n  display: flex;\n  flex-direction: column;\n\n  :deep(.v-toolbar__content) {\n    height: auto !important;\n    display: flex;\n    flex-direction: column;\n    padding: 0;\n  }\n\n  .global-notification-banner {\n    background-color: #5284e1;\n    color: white;\n    width: 100%;\n    height: 34px;\n    display: flex;\n    justify-content: center;\n    align-items: center;\n    font-size: 15px;\n    font-weight: 500;\n\n    svg {\n      margin-right: 10px;\n      color: white;\n    }\n  }\n\n  .header-content {\n    display: flex;\n    width: 100%;\n    align-items: center;\n    height: 64px;\n    padding: 0 16px;\n  }\n}\n\n</style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoggedInContent.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./LoggedInContent.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./LoggedInContent.vue?vue&type=template&id=0c9fc3c6&scoped=true\"\nimport script from \"./LoggedInContent.vue?vue&type=script&lang=ts\"\nexport * from \"./LoggedInContent.vue?vue&type=script&lang=ts\"\nimport style0 from \"./LoggedInContent.vue?vue&type=style&index=0&id=0c9fc3c6&prod&scoped=true&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  \"0c9fc3c6\",\n  null\n  \n)\n\nexport default component.exports","import { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VMain,{class:{ pushright: !_vm.mini, globalnotification: _vm.isNonEmptyText(_vm.globalNotice) }},[_c(VAppBar,{staticClass:\"pb-top-toolbar default\",attrs:{\"clipped-left\":\"\",\"fixed\":\"\",\"light\":\"\",\"flat\":\"\"}},[(_vm.globalNotice)?_c('div',{staticClass:\"global-notification-banner\"},[_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"fa-solid fa-circle-exclamation\")]),_vm._v(\"\\n      \"+_vm._s(_vm.globalNotice)+\"\\n    \")],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"header-content\"},[(_vm.isFortnoxWL)?[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isDarkMode),expression:\"!isDarkMode\"}],staticClass:\"logo-fortnox-wl\"},[_c('img',{staticClass:\"sidenav-logo\",attrs:{\"data-test-id\":\"logo-plugboard\",\"src\":\"/public/assets/images/logo-connector-fortnox-wl.png\"}}),_vm._v(\" \"),_c('span',{staticClass:\"logo-title\"},[_vm._v(\"\\n            \"+_vm._s(_vm._('Integrations'))+\"\\n          \")])]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isDarkMode),expression:\"isDarkMode\"}],staticClass:\"logo-fortnox-wl\"},[_c('img',{staticClass:\"sidenav-logo\",attrs:{\"data-test-id\":\"logo-plugboard\",\"src\":\"/public/assets/images/logo-connector-fortnox-inverted-wl.png\"}}),_vm._v(\" \"),_c('span',{staticClass:\"logo-title\"},[_vm._v(\"\\n            \"+_vm._s(_vm._('Integrations'))+\"\\n          \")])])]:[_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isDarkMode),expression:\"!isDarkMode\"}],staticClass:\"sidenav-logo\",attrs:{\"data-test-id\":\"logo-plugboard\",\"src\":\"/public/assets/images/logo-partnerportal.svg\"}}),_vm._v(\" \"),_c('img',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isDarkMode),expression:\"isDarkMode\"}],staticClass:\"sidenav-logo\",attrs:{\"data-test-id\":\"logo-plugboard\",\"src\":\"/public/assets/images/logo-partnerportal-inverted.svg\"}})],_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),(_vm.hasStatsPerm && _vm.tenantsWithIssuesCount > 0)?_c('div',{staticClass:\"issue-tracker-banner\"},[_c(VBtn,{staticClass:\"issue-tracker-banner-content\",attrs:{\"href\":\"/issues/\"}},[_c(VIcon,[_vm._v(\"fa-regular fa-circle-exclamation\")]),_vm._v(\" \"),_c('span',[_vm._v(\"\\n            \"+_vm._s(_vm._(\"Issue_tracker_banner_prefix\"))+\"\\n            \"),_c('span',{staticClass:\"issue-count-number\"},[_vm._v(\"\\n              \"+_vm._s(_vm.tenantsWithIssuesCount)+\"\\n            \")]),_vm._v(\" \"),(_vm.tenantsWithIssuesCount < 2)?[_vm._v(\"\\n              \"+_vm._s(_vm._(\"Issue_tracker_banner_suffix_singular\"))+\"\\n            \")]:[_vm._v(\"\\n              \"+_vm._s(_vm._(\"Issue_tracker_banner_suffix\"))+\"\\n            \")]],2),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c(VIcon,[_vm._v(\"fa-solid fa-arrow-right\")])],1)],1):_vm._e(),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('div',{staticClass:\"btn-switch-wrapper\"},[_c(VBtn,{class:{ active: !_vm.isDarkMode },attrs:{\"depressed\":\"\",\"data-test-id\":\"toggle-theme-light\"},on:{\"click\":function($event){return _vm.toggleTheme(false)}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fas fa-sun-bright\",\"color\":\"grey\"}})],1),_vm._v(\" \"),_c(VBtn,{class:{ active: _vm.isDarkMode },attrs:{\"depressed\":\"\",\"data-test-id\":\"toggle-theme-dark\"},on:{\"click\":function($event){return _vm.toggleTheme(true)}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fa-solid fa-moon\",\"color\":\"grey\"}})],1)],1),_vm._v(\" \"),_c(VMenu,{attrs:{\"nudge-width\":200,\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VAvatar,_vm._g({attrs:{\"size\":\"42\",\"data-test-id\":\"avatar-btn\"}},on),[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fa-regular fa-circle-user\",\"color\":\"grey\"}})],1)]}}])},[_vm._v(\" \"),_c(VCard,[_c(VList,[_c(VListItem,[_c(VListItemContent,[_c(VListItemTitle,[_c('span',{attrs:{\"data-selenium\":\"reseller-full-name\"}},[_vm._v(\"\\n                    \"+_vm._s(_vm.fullName)+\"\\n                  \")])]),_vm._v(\" \"),_c(VListItemSubtitle,[_vm._v(\"\\n                  \"+_vm._s(_vm.email)+\"\\n                \")])],1)],1)],1),_vm._v(\" \"),_c(VDivider,{staticClass:\"my-0\"}),_vm._v(\" \"),(_vm.isTestMode)?_c('span',{attrs:{\"data-test-id\":\"test-env-banner\"}},[_c('span',{staticClass:\"instans-test\"},[_vm._v(\"\\n              TESTMILJÖ\\n            \")])]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"instans-info\"},[(_vm.isTestMode)?_c('span',[_c('span',{staticClass:\"instans-type\"},[_vm._v(\"Site:\")]),_vm._v(\" \"),_c('span',{attrs:{\"data-test-id\":\"site-name\"}},[_vm._v(_vm._s(_vm.siteName))])]):_vm._e(),_vm._v(\" \"),_c('span',{staticClass:\"instans-type\"},[_vm._v(\"V:\")]),_vm._v(\" \"),_c('span',{attrs:{\"data-test-id\":\"version-number\"}},[_vm._v(_vm._s(_vm.versionNumber))]),_vm._v(\" \"),_c('span',{staticClass:\"instans-type\"},[_vm._v(\"B:\")]),_vm._v(\" \"),_c('span',{attrs:{\"data-test-id\":\"build-number\"}},[_vm._v(_vm._s(_vm.buildNumber))]),_vm._v(\" \"),(_vm.backendName !== '')?_c('span',[_c('span',{staticClass:\"instans-type\"},[_vm._v(\"BE:\")]),_vm._v(\" \"),_c('span',{staticClass:\"backendName\",attrs:{\"data-test-id\":\"backend-name\"}},[_vm._v(\"\\n                \"+_vm._s(_vm.backendName)+\"\\n              \")])]):_vm._e()]),_vm._v(\" \"),_c(VDivider,{staticClass:\"my-0\"}),_vm._v(\" \"),_c(VCardActions,[_c(VSpacer),_vm._v(\" \"),_c('LogoutBtn',{attrs:{\"data-test-id\":\"logout-button\"}})],1)],1)],1)],2)]),_vm._v(\" \"),_c(VNavigationDrawer,{staticClass:\"sidenav\",attrs:{\"mini-variant\":_vm.mini,\"hide-overlay\":\"\",\"stateless\":\"\",\"fixed\":\"\",\"dark\":\"\"},model:{value:(_vm.drawer),callback:function ($$v) {_vm.drawer=$$v},expression:\"drawer\"}},[_c(VList,[_c('SidebarMenuItem',{staticClass:\"sidenav-menu-item\",attrs:{\"data-cy\":\"sidebar-item-home\",\"href\":\"/\"}},[_c(VListItemAction,[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-house\",\"color\":\"grey\"}})],1),_vm._v(\" \"),_c(VListItemTitle,[_vm._v(\"\\n          \"+_vm._s(_vm._(\"Home\"))+\"\\n        \")])],1),_vm._v(\" \"),(_vm.hasTenantViewPerm)?_c('SidebarMenuItem',{staticClass:\"sidenav-menu-item\",attrs:{\"data-cy\":\"sidebar-item-tenants\",\"href\":\"/tenants/\"}},[_c(VListItemAction,[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-users\",\"color\":\"grey\"}})],1),_vm._v(\" \"),_c(VListItemTitle,[_vm._v(\"\\n          \"+_vm._s(_vm._(\"Tenants\"))+\"\\n        \")])],1):_vm._e(),_vm._v(\" \"),(_vm.hasStatsPerm)?_c('SidebarMenuItem',{staticClass:\"sidenav-menu-item\",attrs:{\"data-cy\":\"sidebar-item-analytics\",\"href\":\"/analytics/\"}},[_c(VListItemAction,[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-gauge\",\"color\":\"grey\"}})],1),_vm._v(\" \"),_c(VListItemTitle,[_vm._v(\"\\n          \"+_vm._s(_vm._(\"Analytics\"))+\"\\n        \")])],1):_vm._e(),_vm._v(\" \"),(_vm.hasStatsPerm)?_c('SidebarMenuItem',{staticClass:\"sidenav-menu-item\",attrs:{\"href\":\"/issues/\"}},[_c(VListItemAction,[(_vm.tenantsWithIssues)?_c(VBadge,{attrs:{\"dot\":\"\",\"location\":\"top right\",\"color\":\"error\"}},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-radar\",\"color\":\"grey\"}})],1):[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-radar\",\"color\":\"grey\"}})]],2),_vm._v(\" \"),_c(VListItemTitle,{staticClass:\"item-with-badge\"},[_vm._v(\"\\n          \"+_vm._s(_vm._(\"Tenant_issues\"))+\"\\n        \")])],1):_vm._e()],1),_vm._v(\" \"),_c(VList,{staticClass:\"menu-list-bottom\"},[_c('SidebarMenuItem',{staticClass:\"sidenav-menu-item\",attrs:{\"data-selenium\":\"menu-support\",\"href\":\"/support/\"}},[_c(VListItemAction,[_c('FontAwesomeIcon',{attrs:{\"color\":\"grey\",\"icon\":\"fa-regular fa-circle-question\"}})],1),_vm._v(\" \"),_c(VListItemTitle,[_vm._v(\"\\n          \"+_vm._s(_vm._('Help_center'))+\"\\n        \")])],1),_vm._v(\" \"),_c('SidebarMenuItem',{staticClass:\"sidenav-menu-item\",attrs:{\"href\":\"/settings/\",\"data-cy\":\"sidebar-item-settings\"}},[_c(VListItemAction,[_c('FontAwesomeIcon',{attrs:{\"color\":\"grey\",\"icon\":\"far fa-gear\"}})],1),_vm._v(\" \"),_c(VListItemTitle,[_vm._v(\"\\n          \"+_vm._s(_vm._(\"Settings\"))+\"\\n        \")])],1),_vm._v(\" \"),_c(VDivider,{staticClass:\"mt-3\"}),_vm._v(\" \"),(_vm.mini)?_c(VListItem,{staticClass:\"chevron\",attrs:{\"data-cy\":\"toggle-sidebar\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.changeMini(!_vm.mini)}}},[_c(VListItemAction,[_c('FontAwesomeIcon',{attrs:{\"icon\":['fas', 'chevron-right'],\"color\":\"grey\"}})],1)],1):_vm._e(),_vm._v(\" \"),(!_vm.mini)?_c(VListItem,{attrs:{\"data-cy\":\"toggle-sidebar\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.changeMini(!_vm.mini)}}},[_c(VSpacer),_vm._v(\" \"),_c(VListItemAction,{staticClass:\"action-right\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":['fas', 'chevron-left'],\"color\":\"grey\"}})],1)],1):_vm._e()],1)],1),_vm._v(\" \"),_vm._t(\"default\"),_vm._v(\" \"),_c('ErrorDialog',{ref:\"errorDialog\"}),_vm._v(\" \"),_c('ConfirmDialog',{ref:\"confirmDialog\"}),_vm._v(\" \"),_c('DeleteDialog',{ref:\"deleteDialog\"}),_vm._v(\" \"),_c('SuccessDialog',{ref:\"successDialog\"}),_vm._v(\" \"),_c('LoadingDialog',{ref:\"loadingDialog\"}),_vm._v(\" \"),_c('InfoDialog',{ref:\"infoDialog\"})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, PropType } from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\n\nimport {\n  ConnectorObject,\n} from \"@/types\"\nimport { SpecialPlugDefinitionObj } from \"@/modules/tenant-edit-dialog/sales-flow-utils\"\n\n/******** Local types *********/\n\ntype Direction = \"import\" | \"export\"\n\n/******** Local types end *********/\n\nexport default defineComponent({\n  name: \"AppGraph\",\n\n  props: {\n    sourceSystems: {\n      type: Array as PropType<ConnectorObject[]>,\n      default: () => ([]),\n    },\n\n    destinationSystems: {\n      type: Array as PropType<ConnectorObject[]>,\n      default: () => ([]),\n    },\n\n    plugs: {\n      type: Array as PropType<SpecialPlugDefinitionObj[]>,\n      default: () => ([]),\n    },\n    tenantCountry: String as PropType<string | undefined>,\n  },\n\n  methods: {\n    plugClass(index: number): string {\n      let text = \"\"\n\n      if (index === 0) {\n        text += \" first-index\"\n      }\n\n      return text\n    },\n\n    getActivePlugs(conn: ConnectorObject, direction: Direction): SpecialPlugDefinitionObj[] {\n      if (direction === \"import\") {\n        return this.plugs.filter(\n          (p) => p?.import && p?.connection?.value === conn?.value\n        )\n      } else {\n        return this.plugs.filter(\n          (p) => p?.export && p?.connection?.value === conn?.value\n        )\n      }\n    },\n\n    getConnectorUrlLogo(typeCode: string): string {\n      const toUrl = (code: string): string =>\n        \"/public/assets/images/logo-connector-\" + code + \"-thumbnail.png\"\n\n      if (typeCode === \"vismaeaccounting\") {\n        switch (this.tenantCountry) {\n          case \"SE\": return toUrl(\"vismaeekonomi\")\n          case \"FI\": return toUrl(\"vismaepasseli\")\n          default: return toUrl(typeCode)\n        }\n      }\n      else {\n        return toUrl(typeCode)\n      }\n    },\n\n    isNonEmptyArray(arr: any) {\n      return Util.isNonEmptyArray(arr)\n    },\n  },\n})\n</script>\n<template>\n  <div class=\"app-graph overview\">\n    <!---- LEFT SIDE: SELECTED ---->\n    <div class=\"graph-block-wrapper source-systems\">\n      <div class=\"graph-blocks\">\n        <!---- SYSTEM ---->\n        <div\n          v-for=\"(conn, index) in sourceSystems\"\n          class=\"connection-block\"\n          :key=\"conn?.value + index\"\n        >\n          <div class=\"image-wrapper relative\">\n            <div class=\"image-wrapper-inner\">\n              <VImg\n                :src=\"getConnectorUrlLogo(conn?.value)\"\n                :data-value=\"conn?.value\"\n                contain\n              >\n              </VImg>\n            </div>\n          </div>\n\n          <div class=\"plug-overview-wrapper\">\n            <div\n              v-if=\"isNonEmptyArray(getActivePlugs(conn, 'import'))\"\n              class=\"plug-overview import\"\n            >\n              <div class=\"line\"></div>\n\n              <div class=\"active-plugs\">\n                <div\n                  v-for=\"(plug, i) in getActivePlugs(conn, 'import')\"\n                  :class=\"plugClass(i)\"\n                  class=\"plug-item\"\n                  :key=\"'plug-' + i + conn?.value\"\n                >\n                  {{ plug.text }}\n                </div>\n              </div>\n\n              <div\n                v-if=\"sourceSystems.length === 1\"\n                class=\"arrow\"\n              ></div>\n\n              <div\n                :class=\"{\n                  'line-hidden-bottom': index === sourceSystems.length - 1,\n                }\"\n                class=\"right\"\n              ></div>\n\n              <div\n                :class=\"{ 'line-hidden-top': index === 0 }\"\n                class=\"right\"\n              ></div>\n            </div>\n\n            <div\n              v-if=\"isNonEmptyArray(getActivePlugs(conn, 'export'))\"\n              class=\"plug-overview export\"\n            >\n              <div class=\"line\"></div>\n              <div\n                v-if=\"sourceSystems.length === 1\"\n                class=\"arrow\"\n              ></div>\n\n              <div class=\"active-plugs\">\n                <div\n                  v-for=\"(plug, i) in getActivePlugs(conn, 'export')\"\n                  :class=\"plugClass(i)\"\n                  class=\"plug-item\"\n                  :key=\"'plug-' + i + conn?.value\"\n                >\n                  {{ plug.text }}\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n        <div\n          v-if=\"sourceSystems.length > 1\"\n          class=\"vertical-line import\"\n        ></div>\n      </div>\n\n      <div\n        v-if=\"sourceSystems.length > 1\"\n        class=\"plug-overview-endpoint import\"\n      >\n        <div class=\"line export\"></div>\n        <div class=\"arrow\"></div>\n      </div>\n    </div>\n\n    <div class=\"pb-outer-wrapper\">\n      <div class=\"pb-wrapper-lg\">\n        <div class=\"pb-wrapper-lg-inner\">\n          <img\n            src=\"/public/assets/images/logo-sharespine-inverted.svg\"\n            height=\"35\"\n          />\n        </div>\n      </div>\n    </div>\n\n    <!---- RIGHT SIDE: ERP ---->\n\n    <div class=\"graph-block-wrapper destination-systems\">\n      <div class=\"graph-blocks\">\n        <div\n          v-for=\"conn in destinationSystems\"\n          :key=\"conn.value\"\n        >\n          <div class=\"connection-block justify-end\">\n            <div class=\"plug-overview-wrapper\">\n              <div\n                v-if=\"isNonEmptyArray(getActivePlugs(conn, 'import'))\"\n                class=\"plug-overview import\"\n              >\n                <div class=\"line\"></div>\n                <div class=\"arrow\"></div>\n\n                <div class=\"active-plugs\">\n                  <div\n                    v-for=\"(plug, index) in getActivePlugs(conn, 'import')\"\n                    :class=\"plugClass(index)\"\n                    class=\"plug-item\"\n                    :key=\"'plug' + index + conn?.value\"\n                  >\n                    {{ plug.text }}\n                  </div>\n                </div>\n              </div>\n              <div\n                v-if=\"isNonEmptyArray(getActivePlugs(conn, 'export'))\"\n                class=\"plug-overview export\"\n              >\n                <div class=\"line\"></div>\n\n                <div class=\"active-plugs\">\n                  <div\n                    v-for=\"(plug, index) in getActivePlugs(conn, 'export')\"\n                    :class=\"plugClass(index)\"\n                    class=\"plug-item\"\n                    :key=\"'plug' + index + conn?.value\"\n                  >\n                    {{ plug.text }}\n                  </div>\n                </div>\n\n                <div class=\"arrow\"></div>\n              </div>\n            </div>\n            <div class=\"image-wrapper relative\">\n              <div class=\"image-wrapper-inner\">\n                <VImg\n                  :src=\"getConnectorUrlLogo(conn?.value)\"\n                  :data-value=\"conn?.value\"\n                  contain\n                >\n                </VImg>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n<style lang=\"scss\">\n.app-graph {\n  display: flex;\n  width: 100%;\n  overflow: hidden;\n\n  .connection-block-wrapper {\n    .line {\n      background-color: #bebfc3 !important;\n    }\n  }\n\n  .arrow {\n    width: 0;\n    height: 0;\n    border-top: 8px solid transparent;\n    border-bottom: 8px solid transparent;\n    border-left: 10px solid var(--v-title-base);\n    position: absolute;\n    align-self: center;\n    right: 0;\n  }\n\n  .plug-overview {\n    width: 100%;\n    display: flex;\n    position: relative;\n    align-self: center;\n    align-items: center;\n    justify-self: center;\n\n    .direction-chip {\n      margin: auto 0 auto 20px !important;\n    }\n\n    .line {\n      background: var(--v-title-base);\n      position: absolute;\n      width: 100%;\n      top: 1px;\n      bottom: 0;\n      height: 1px;\n      margin: auto;\n    }\n\n    .active-plugs {\n      margin: auto;\n      border: 1px solid var(--v-title-base);\n      background: #fafafa;\n      z-index: 1;\n      min-width: 170px;\n      font-weight: 500;\n      font-size: 12px;\n      line-height: 1.5;\n      border-radius: 8px;\n      overflow: hidden;\n      color: var(--v-title-base);\n\n      .plug-item {\n        align-items: center;\n        border-top: transparent !important;\n        padding: 3px 2px 3px 6px;\n        display: flex;\n\n        svg {\n          font-size: 14px !important;\n          margin-bottom: 2px;\n          width: 14px;\n          height: 14px;\n        }\n\n        .inline-schedule {\n          z-index: 1;\n          display: flex;\n          padding: 2px 6px 2px 4px;\n          font-weight: 600;\n          font-size: 12px;\n          align-items: center;\n          gap: 4px;\n          max-width: max-content;\n          width: max-content !important;\n          border-radius: 7px;\n          margin: 3px 3px 3px 20px;\n\n          .run-before {\n            display: none;\n          }\n\n          .run-after {\n            display: none;\n          }\n\n          .fa-clock {\n            font-size: 12px !important;\n            margin-bottom: 0;\n            width: 12px;\n            height: 12px;\n          }\n        }\n      }\n\n      .plug-item:first-child {\n        border-top: none;\n      }\n    }\n  }\n\n  .graph-block-wrapper.destination-systems {\n    .plug-overview.export {\n      .arrow {\n        right: 0;\n        border-left: 10px solid var(--v-flowExportBorder-base);\n        border-right: 0;\n      }\n\n      .line {\n        background: var(--v-flowExportBorder-base);\n      }\n\n      .active-plugs {\n        border-color: var(--v-flowExportBorder-base);\n        background: var(--v-flowExportBg-base);\n        color: var(--v-flowExportText-base);\n\n        .plug-item {\n          border-color: transparent !important;\n        }\n      }\n    }\n\n    .plug-overview.import {\n      .arrow {\n        border-right: 10px solid var(--v-flowImportBorder-base);\n        left: 0;\n        border-left: 0;\n      }\n\n      .line {\n        background: var(--v-flowImportBorder-base);\n      }\n\n      .active-plugs {\n        border-color: var(--v-flowImportBorder-base);\n        background: var(--v-flowImportBg-base);\n        color: var(--v-flowImportText-base);\n\n        .plug-item {\n          border-color: transparent !important;\n        }\n      }\n    }\n  }\n\n  .graph-block-wrapper.source-systems {\n    .plug-overview.import {\n      .line {\n        background: var(--v-flowImportBorder-base);\n      }\n\n      .arrow {\n        right: 0;\n        border-left: 10px solid var(--v-flowImportBorder-base);\n        border-right: 0;\n      }\n\n      .active-plugs {\n        border-color: var(--v-flowImportBorder-base);\n        background: var(--v-flowImportBg-base);\n        color: var(--v-flowImportText-base);\n      }\n    }\n\n    .plug-overview.export {\n      .arrow {\n        border-left: 10px solid var(--v-flowExportBorder-base);\n      }\n\n      .line {\n        background: var(--v-flowExportBorder-base);\n      }\n\n      .active-plugs {\n        border-color: var(--v-flowExportBorder-base);\n        background: var(--v-flowExportBg-base);\n        color: var(--v-flowExportText-base);\n\n        .plug-item {\n          border-color: transparent !important;\n        }\n      }\n    }\n  }\n\n  .graph-block-wrapper {\n    width: 100%;\n    display: flex;\n    overflow: hidden;\n\n    .plug-overview-wrapper {\n      width: 100%;\n      display: flex;\n      flex-direction: column;\n      gap: 10px;\n    }\n\n    .plug-overview-endpoint {\n      width: 40px !important;\n      position: relative;\n      display: flex;\n      flex-direction: column;\n      align-self: center;\n\n      .line {\n        background: var(--v-flowImportBorder-base);\n        height: 1px;\n        width: 100%;\n      }\n\n      .arrow {\n        bottom: -8px;\n        border-left: 10px solid var(--v-flowImportBorder-base);\n      }\n    }\n\n    .graph-blocks {\n      width: 100%;\n      align-self: center;\n      position: relative;\n\n      .vertical-line {\n        background: var(--v-flowImportBorder-base);\n        position: absolute;\n        height: 100%;\n        top: 0;\n        bottom: 0;\n        width: 1px;\n        margin: auto;\n      }\n\n      .vertical-line.import {\n        background-color: var(--v-flowImportBorder-base);\n        right: 0;\n      }\n\n      .vertical-line.export {\n        background-color: var(--v-flowExportBorder-base);\n        left: 0;\n      }\n\n      .connection-block {\n        position: relative;\n        display: flex;\n        padding: 8px 0;\n        align-items: center;\n      }\n    }\n\n    .line-hidden-top {\n      position: absolute;\n      height: 100px;\n      width: 3px;\n      left: -1px;\n      background-color: var(--v-background-base);\n      bottom: 50%;\n    }\n\n    .line-hidden-top.right {\n      right: -2px !important;\n      left: auto;\n      z-index: 99;\n    }\n\n    .line-hidden-bottom {\n      position: absolute;\n      height: 100px;\n      width: 3px;\n      left: -1px;\n      background-color: var(--v-background-base);\n      top: calc(50% + 1px);\n    }\n\n    .line-hidden-bottom.right {\n      right: -2px !important;\n      left: auto;\n      z-index: 99;\n    }\n\n    .line-overlay {\n      display: none;\n      height: 50%;\n      background: var(--v-background-base);\n      width: 3px;\n      position: absolute;\n      z-index: 1;\n    }\n\n    .line-overlay.import {\n      right: 0;\n      right: -1px;\n    }\n\n    .line-overlay.export {\n      left: 0;\n      left: -1px;\n    }\n\n    .line-overlay.first {\n      display: block;\n      top: 0;\n    }\n\n    .line-overlay.last {\n      height: calc(50% - 1px);\n      display: block;\n      bottom: 0;\n    }\n\n    .image-wrapper {\n      height: auto;\n      width: 110px;\n      min-width: 110px;\n      padding: 0;\n      display: flex;\n      flex-direction: column;\n      border: none !important;\n\n      .image-wrapper-inner {\n        border: 1px solid var(--v-border-base);\n        border-radius: 20px;\n        width: 100%;\n        height: 100px;\n        overflow: hidden;\n        position: relative;\n        display: flex;\n        flex-direction: column;\n        background: white;\n      }\n\n      .connection-note {\n        position: absolute;\n        top: 0;\n        right: 0;\n        padding: 6px;\n\n        svg {\n          color: #8a8a94;\n          font-size: 16px;\n        }\n      }\n\n      .v-image {\n        max-width: 70%;\n        margin: auto;\n        min-height: 80px;\n      }\n    }\n\n    .connection-name {\n      font-size: 11px;\n      right: 0;\n      margin: auto;\n      line-height: 1.3;\n      text-align: center;\n      border-top: 1px solid var(--v-border-base);\n      width: 100%;\n      padding: 6px;\n      font-weight: 500;\n      background: #fcfcfc;\n    }\n\n    .connection-name:hover {\n      overflow: visible;\n    }\n  }\n\n  .pb-outer-wrapper {\n    display: flex;\n    flex-direction: column;\n    align-self: center;\n\n    .pb-wrapper-lg {\n      border-radius: 28px;\n      border: 1px solid #d3cdff;\n      padding: 5px;\n      display: flex;\n      height: 120px;\n      background: white;\n\n      .pb-wrapper-lg-inner {\n        background: var(--v-primary-base);\n        border-radius: 24px;\n        display: flex;\n        padding: 12px 10px;\n        flex-direction: column;\n\n        img {\n          max-width: 90px;\n          margin: auto;\n        }\n\n        .v-icon {\n          color: var(--v-background-base);\n          display: none;\n        }\n      }\n    }\n  }\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppGraph.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppGraph.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AppGraph.vue?vue&type=template&id=39521929\"\nimport script from \"./AppGraph.vue?vue&type=script&lang=ts\"\nexport * from \"./AppGraph.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AppGraph.vue?vue&type=style&index=0&id=39521929&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 { VImg } from 'vuetify/lib/components/VImg';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"app-graph overview\"},[_c('div',{staticClass:\"graph-block-wrapper source-systems\"},[_c('div',{staticClass:\"graph-blocks\"},[_vm._l((_vm.sourceSystems),function(conn,index){return _c('div',{key:conn?.value + index,staticClass:\"connection-block\"},[_c('div',{staticClass:\"image-wrapper relative\"},[_c('div',{staticClass:\"image-wrapper-inner\"},[_c(VImg,{attrs:{\"src\":_vm.getConnectorUrlLogo(conn?.value),\"data-value\":conn?.value,\"contain\":\"\"}})],1)]),_vm._v(\" \"),_c('div',{staticClass:\"plug-overview-wrapper\"},[(_vm.isNonEmptyArray(_vm.getActivePlugs(conn, 'import')))?_c('div',{staticClass:\"plug-overview import\"},[_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('div',{staticClass:\"active-plugs\"},_vm._l((_vm.getActivePlugs(conn, 'import')),function(plug,i){return _c('div',{key:'plug-' + i + conn?.value,staticClass:\"plug-item\",class:_vm.plugClass(i)},[_vm._v(\"\\n                \"+_vm._s(plug.text)+\"\\n              \")])}),0),_vm._v(\" \"),(_vm.sourceSystems.length === 1)?_c('div',{staticClass:\"arrow\"}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"right\",class:{\n                'line-hidden-bottom': index === _vm.sourceSystems.length - 1,\n              }}),_vm._v(\" \"),_c('div',{staticClass:\"right\",class:{ 'line-hidden-top': index === 0 }})]):_vm._e(),_vm._v(\" \"),(_vm.isNonEmptyArray(_vm.getActivePlugs(conn, 'export')))?_c('div',{staticClass:\"plug-overview export\"},[_c('div',{staticClass:\"line\"}),_vm._v(\" \"),(_vm.sourceSystems.length === 1)?_c('div',{staticClass:\"arrow\"}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"active-plugs\"},_vm._l((_vm.getActivePlugs(conn, 'export')),function(plug,i){return _c('div',{key:'plug-' + i + conn?.value,staticClass:\"plug-item\",class:_vm.plugClass(i)},[_vm._v(\"\\n                \"+_vm._s(plug.text)+\"\\n              \")])}),0)]):_vm._e()])])}),_vm._v(\" \"),(_vm.sourceSystems.length > 1)?_c('div',{staticClass:\"vertical-line import\"}):_vm._e()],2),_vm._v(\" \"),(_vm.sourceSystems.length > 1)?_c('div',{staticClass:\"plug-overview-endpoint import\"},[_c('div',{staticClass:\"line export\"}),_vm._v(\" \"),_c('div',{staticClass:\"arrow\"})]):_vm._e()]),_vm._v(\" \"),_vm._m(0),_vm._v(\" \"),_c('div',{staticClass:\"graph-block-wrapper destination-systems\"},[_c('div',{staticClass:\"graph-blocks\"},_vm._l((_vm.destinationSystems),function(conn){return _c('div',{key:conn.value},[_c('div',{staticClass:\"connection-block justify-end\"},[_c('div',{staticClass:\"plug-overview-wrapper\"},[(_vm.isNonEmptyArray(_vm.getActivePlugs(conn, 'import')))?_c('div',{staticClass:\"plug-overview import\"},[_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('div',{staticClass:\"arrow\"}),_vm._v(\" \"),_c('div',{staticClass:\"active-plugs\"},_vm._l((_vm.getActivePlugs(conn, 'import')),function(plug,index){return _c('div',{key:'plug' + index + conn?.value,staticClass:\"plug-item\",class:_vm.plugClass(index)},[_vm._v(\"\\n                  \"+_vm._s(plug.text)+\"\\n                \")])}),0)]):_vm._e(),_vm._v(\" \"),(_vm.isNonEmptyArray(_vm.getActivePlugs(conn, 'export')))?_c('div',{staticClass:\"plug-overview export\"},[_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('div',{staticClass:\"active-plugs\"},_vm._l((_vm.getActivePlugs(conn, 'export')),function(plug,index){return _c('div',{key:'plug' + index + conn?.value,staticClass:\"plug-item\",class:_vm.plugClass(index)},[_vm._v(\"\\n                  \"+_vm._s(plug.text)+\"\\n                \")])}),0),_vm._v(\" \"),_c('div',{staticClass:\"arrow\"})]):_vm._e()]),_vm._v(\" \"),_c('div',{staticClass:\"image-wrapper relative\"},[_c('div',{staticClass:\"image-wrapper-inner\"},[_c(VImg,{attrs:{\"src\":_vm.getConnectorUrlLogo(conn?.value),\"data-value\":conn?.value,\"contain\":\"\"}})],1)])])])}),0)])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"pb-outer-wrapper\"},[_c('div',{staticClass:\"pb-wrapper-lg\"},[_c('div',{staticClass:\"pb-wrapper-lg-inner\"},[_c('img',{attrs:{\"src\":\"/public/assets/images/logo-sharespine-inverted.svg\",\"height\":\"35\"}})])])])\n}]\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, PropType } from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\nimport Locale from \"@/modules/utils/locales\"\n\nimport ResellerUser from \"@/modules/injected-js-handlers/reseller-user\"\n\nimport {\n  TenantOptionRuleGroup,\n  Selectable,\n} from \"@/types\"\n\nimport {\n  TenantEditDialogUtils,\n} from \"@/modules/tenant-edit-dialog/tenant-edit-dialog-utils\"\n\ninterface MenuItem {\n  value: string,\n}\n\ninterface MenuSystem extends MenuItem {\n  disabled: boolean,\n  missingOpts: string[],\n  type: \"system\",\n}\n\ninterface MenuHeader extends MenuItem {\n  type: \"header\",\n}\n\nexport default defineComponent({\n  name: \"AssistantSystemSelect\",\n\n  props: {\n    group: Object as PropType<TenantOptionRuleGroup>,\n\n    options: {\n      type: Array as PropType<string[]>,\n      default: () => [],\n    },\n    disableSelect: Boolean,\n    showDisabled: Boolean,\n    tenantCountry: String as PropType<string | undefined>,\n  },\n\n  computed: {\n    showResellerOptsText(): boolean {\n      return ResellerUser.isAdmin() || this.showDisabled\n    },\n\n    getSystems(): MenuItem[] {\n      if (!this.group) return []\n\n      const group: TenantOptionRuleGroup = this.group\n\n      const mapSystemToSystemObject = (system: string): MenuSystem | undefined => {\n        const systemSelectObject: Selectable | undefined = group.selectable[system]\n\n        if (systemSelectObject) {\n          return {\n            value: system,\n            disabled: systemSelectObject ? !systemSelectObject.available : false,\n            missingOpts: systemSelectObject.missingOpts,\n            type: \"system\",\n          }\n        }\n\n        return undefined\n      }\n\n      const systems = group.systems\n        .map(s => mapSystemToSystemObject(s))\n        .filter(s => s !== undefined)\n        // If right side then filter out the unavailable\n        .filter(sysObj => this.showResellerOptsText ? true : !sysObj.disabled)\n\n      const groupedItems: MenuItem[] = []\n\n      const activeSystems = systems.filter((sysObj: MenuSystem) => !sysObj.disabled)\n      const inactiveSystems = systems.filter((sysObj: MenuSystem) => sysObj.disabled)\n\n      if (activeSystems.length) {\n        groupedItems.push(...activeSystems)\n      }\n\n      if (inactiveSystems.length) {\n        const header: MenuHeader = { value: \"header\", type: \"header\" }\n        groupedItems.push(header)\n        groupedItems.push(...inactiveSystems)\n      }\n\n      return groupedItems\n    },\n\n    isAdmin(): boolean {\n      return ResellerUser.isAdmin()\n    },\n  },\n\n  methods: {\n    getConnectorName(typeCode: string): string {\n      if (typeCode === \"vismaeaccounting\") {\n        if (this.tenantCountry === \"SE\") return Locale.translate(\"spiris\")\n        if (this.tenantCountry === \"FI\") return Locale.translate(\"epasseli\")\n        else return Locale.translate(typeCode)\n      }\n\n      return Locale.translate(typeCode)\n    },\n\n    isGroupActive(\n      group: TenantOptionRuleGroup | undefined,\n      system: string\n    ): boolean {\n      if (!this.options || !group) return false\n      return TenantEditDialogUtils.isGroupActive(group, system, this.options)\n    },\n\n    hasOption(option: string): boolean {\n      if (!Util.isNonEmptyArray(this?.options)) return false\n      return this.options.includes(option)\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n</script>\n<template>\n  <div>\n    <VOverflowBtn\n      v-if=\"group\"\n      :value=\"getSystems[0]?.value\"\n      :disabled=\"disableSelect\"\n      :items=\"getSystems\"\n      :menu-props=\"{\n        contentClass: 'overflow-btn-menu-multiple',\n        closeOnContentClick: false,\n      }\"\n      :class=\"{ 'disabled': disableSelect }\"\n      outlined\n      hide-details\n      dense\n      class=\"pb-overflow-btn\"\n    >\n      <template #item=\"{ item }\">\n        <div\n          v-show=\"item.value === 'header'\"\n          class=\"full-width\"\n        >\n          <div class=\"disabled-header\">\n            <VIcon>\n              far fa-toggle-off\n            </VIcon>\n            <div class=\"text-wrapper\">\n              <span class=\"title-label\">\n                {{ _('Disabled_systems_title') }}\n              </span>\n              <span class=\"byline-label\">\n                <span v-if=\"isAdmin\">\n                  {{ _('Disabled_systems_byline_admin') }}\n                </span>\n                <span v-else>\n                  {{ _('Disabled_systems_byline') }}\n                </span>\n              </span>\n            </div>\n          </div>\n        </div>\n        <div\n          v-show=\"item.value !== 'header'\"\n          class=\"full-width\"\n        >\n          <VBtn\n            v-if=\"!item.disabled\"\n            @click=\"$emit('click', item)\"\n            depressed\n            class=\"pb-overflow-inner-btn\"\n          >\n            <div\n              :class=\"{ active: isGroupActive(group, item.value) }\"\n              class=\"overflow-btn-menu-row\"\n            >\n              <VCheckbox\n                v-if=\"group.allowMultiple\"\n                :input-value=\"group.allowMultiple && isGroupActive(group, item.value)\"\n                hide-details\n              >\n              </VCheckbox>\n\n              <div class=\"text-wrapper\">\n                <span class=\"title-label\">\n                  {{ getConnectorName(item.value) }}\n                </span>\n              </div>\n            </div>\n          </VBtn>\n          <div\n            v-else\n            class=\"overflow-btn-menu-row\"\n          >\n            <VTooltip\n              right\n              max-width=\"400\"\n              open-delay=\"100\"\n            >\n              <template #activator=\"{ on }\">\n                <div\n                  v-on=\"on\"\n                  class=\"text-wrapper text-wrapper-disabled\"\n                >\n                  <span class=\"title-label\">\n                    {{ getConnectorName(item.value) }}\n                  </span>\n                  <VSpacer></VSpacer>\n                  <VIcon class=\"disabled-icon\">\n                    fa-solid fa-circle-info\n                  </VIcon>\n                </div>\n              </template>\n              <span>\n                <span v-if=\"isAdmin\">\n                  {{ `${_(\"Reseller_is_missing_following_opts\")} ${item.missingOpts.join(\", \")}` }}\n                </span>\n                <span v-else>\n                  {{ _(\"This_system_can_be_activated\") }}\n                </span>\n              </span>\n            </VTooltip>\n          </div>\n        </div>\n      </template>\n\n      <template #selection>\n        <div\n          v-if=\"group\"\n          :class=\"{ single: !group.allowMultiple }\"\n          class=\"chip-wrapper\"\n        >\n          <span\n            v-for=\"(system, index) in group.systems.filter((system) =>\n              isGroupActive(group, system)\n            )\"\n            :class=\"{ chip: group.allowMultiple }\"\n            :key=\"index\"\n          >\n            {{ getConnectorName(system) }}\n          </span>\n        </div>\n      </template>\n    </VOverflowBtn>\n  </div>\n</template>\n<style lang=\"scss\"></style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssistantSystemSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssistantSystemSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AssistantSystemSelect.vue?vue&type=template&id=eace1bcc\"\nimport script from \"./AssistantSystemSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./AssistantSystemSelect.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","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VOverflowBtn } from 'vuetify/lib/components/VOverflowBtn';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[(_vm.group)?_c(VOverflowBtn,{staticClass:\"pb-overflow-btn\",class:{ 'disabled': _vm.disableSelect },attrs:{\"value\":_vm.getSystems[0]?.value,\"disabled\":_vm.disableSelect,\"items\":_vm.getSystems,\"menu-props\":{\n      contentClass: 'overflow-btn-menu-multiple',\n      closeOnContentClick: false,\n    },\"outlined\":\"\",\"hide-details\":\"\",\"dense\":\"\"},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.value === 'header'),expression:\"item.value === 'header'\"}],staticClass:\"full-width\"},[_c('div',{staticClass:\"disabled-header\"},[_c(VIcon,[_vm._v(\"\\n            far fa-toggle-off\\n          \")]),_vm._v(\" \"),_c('div',{staticClass:\"text-wrapper\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n              \"+_vm._s(_vm._('Disabled_systems_title'))+\"\\n            \")]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"},[(_vm.isAdmin)?_c('span',[_vm._v(\"\\n                \"+_vm._s(_vm._('Disabled_systems_byline_admin'))+\"\\n              \")]):_c('span',[_vm._v(\"\\n                \"+_vm._s(_vm._('Disabled_systems_byline'))+\"\\n              \")])])])],1)]),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(item.value !== 'header'),expression:\"item.value !== 'header'\"}],staticClass:\"full-width\"},[(!item.disabled)?_c(VBtn,{staticClass:\"pb-overflow-inner-btn\",attrs:{\"depressed\":\"\"},on:{\"click\":function($event){return _vm.$emit('click', item)}}},[_c('div',{staticClass:\"overflow-btn-menu-row\",class:{ active: _vm.isGroupActive(_vm.group, item.value) }},[(_vm.group.allowMultiple)?_c(VCheckbox,{attrs:{\"input-value\":_vm.group.allowMultiple && _vm.isGroupActive(_vm.group, item.value),\"hide-details\":\"\"}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"text-wrapper\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                \"+_vm._s(_vm.getConnectorName(item.value))+\"\\n              \")])])],1)]):_c('div',{staticClass:\"overflow-btn-menu-row\"},[_c(VTooltip,{attrs:{\"right\":\"\",\"max-width\":\"400\",\"open-delay\":\"100\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('div',_vm._g({staticClass:\"text-wrapper text-wrapper-disabled\"},on),[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                  \"+_vm._s(_vm.getConnectorName(item.value))+\"\\n                \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c(VIcon,{staticClass:\"disabled-icon\"},[_vm._v(\"\\n                  fa-solid fa-circle-info\\n                \")])],1)]}}],null,true)},[_vm._v(\" \"),_c('span',[(_vm.isAdmin)?_c('span',[_vm._v(\"\\n                \"+_vm._s(`${_vm._(\"Reseller_is_missing_following_opts\")} ${item.missingOpts.join(\", \")}`)+\"\\n              \")]):_c('span',[_vm._v(\"\\n                \"+_vm._s(_vm._(\"This_system_can_be_activated\"))+\"\\n              \")])])])],1)],1)]}},{key:\"selection\",fn:function(){return [(_vm.group)?_c('div',{staticClass:\"chip-wrapper\",class:{ single: !_vm.group.allowMultiple }},_vm._l((_vm.group.systems.filter((system) =>\n            _vm.isGroupActive(_vm.group, system)\n          )),function(system,index){return _c('span',{key:index,class:{ chip: _vm.group.allowMultiple }},[_vm._v(\"\\n          \"+_vm._s(_vm.getConnectorName(system))+\"\\n        \")])}),0):_vm._e()]},proxy:true}],null,false,1861347601)}):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, PropType } from \"vue\"\n\nimport Locale from \"@/modules/utils/locales\"\n\nimport Reseller from \"@/modules/injected-js-handlers/reseller\"\n\nimport {\n  TenantOptionRuleGroup,\n} from \"@/types\"\n\nimport {\n  AssistantSystemSelect,\n} from \"@/components\"\n\nexport default defineComponent({\n  name: \"AssistantSystemSelectWrapper\",\n\n  components: {\n    AssistantSystemSelect,\n  },\n\n  props: {\n    group: Object as PropType<TenantOptionRuleGroup>,\n\n    options: {\n      type: Array as PropType<string[]>,\n      default: () => [],\n    },\n    disableSelect: Boolean,\n    showDisabled: Boolean,\n    tenantCountry: String as PropType<string | undefined>,\n  },\n\n  methods: {\n    hasOption(opt: string): boolean {\n      if (!this.options) return false\n\n      return this.options.includes(opt)\n    },\n\n    resellerHasOption(opt: string): boolean {\n      return Reseller.hasAllowableTenantOption(opt)\n    },\n\n    showZettleSpecialSetting(group: TenantOptionRuleGroup) {\n      const checks: boolean[] = [\n        group.ruleTag === \"source\",\n        this.hasOption(\"izettle.connection\"),\n        this.resellerHasOption(\"izettle.connection\"),\n        this.resellerHasOption(\"izettle.connection.testenv\"),\n      ]\n\n      return checks.every(c => c)\n    },\n\n    showStripeSpecialSetting(group: TenantOptionRuleGroup) {\n      const checks: boolean[] = [\n        group.ruleTag === \"source\",\n        this.hasOption(\"stripeapi.connection\"),\n        this.resellerHasOption(\"stripeapi.connection\"),\n        this.resellerHasOption(\"stripeapi.connection.oauth2\"),\n      ]\n\n      return checks.every(c => c)\n    },\n\n    showSieSpecialSetting(group: TenantOptionRuleGroup) {\n      const checks: boolean[] = [\n        group.ruleTag === \"source\",\n        this.hasOption(\"sie.connection\"),\n        this.resellerHasOption(\"sie.connection\"),\n      ]\n\n      return checks.every(c => c)\n    },\n\n    _(val: string): string {\n      return Locale.translate(val)\n    },\n  },\n})\n</script>\n<template>\n  <div\n    v-if=\"group\"\n    class=\"assistant-system-select-wrapper\"\n  >\n    <div class=\"d-flex full-width gap-4\">\n      <span class=\"label ml-2\">{{ _(group.label) }}</span>\n\n      <div class=\"d-flex flex-col full-width\">\n        <AssistantSystemSelect\n          :group=\"group\"\n          :options=\"options\"\n          :disable-select=\"disableSelect\"\n          :show-disabled=\"showDisabled\"\n          :tenant-country=\"tenantCountry\"\n          @click=\"$emit('click', $event)\"\n        >\n        </AssistantSystemSelect>\n\n        <div\n          v-if=\"showSieSpecialSetting(group)\"\n          class=\"extra-settings\"\n        >\n          <div\n            v-if=\"resellerHasOption('sie.import.mailin') || resellerHasOption('sie.import.sftp')\"\n            class=\"d-flex flex-wrap align-center\"\n          >\n            <div class=\"title-label\">\n              {{ _(group.ruleTag) }}\n            </div>\n            <VSpacer></VSpacer>\n            <div class=\"d-flex gap-1 flex-wrap align-center\">\n              <VBtn\n                v-if=\"resellerHasOption('sie.import.mailin')\"\n                :class=\"{ 'active': hasOption('sie.import.mailin') }\"\n                @click=\"$emit('update-options', ['sie.import.mailin'])\"\n                class=\"btn-switch\"\n              >\n                {{ _(\"sie.import.mailin\") }}\n              </VBtn>\n              <VBtn\n                v-if=\"resellerHasOption('sie.import.sftp')\"\n                :class=\"{ 'active': hasOption('sie.import.sftp') }\"\n                @click=\"$emit('update-options', ['sie.import.sftp'])\"\n                class=\"btn-switch\"\n              >\n                {{ _(\"sie.import.sftp\") }}\n              </VBtn>\n            </div>\n          </div>\n          <div\n            v-if=\"resellerHasOption('sie.import.dimensions')\"\n            class=\"d-flex gap-1 flex-wrap align-center\"\n          >\n            <div class=\"title-label\">\n              {{ _(\"sie.import.dimensions\") }}\n            </div>\n            <VSpacer></VSpacer>\n            <div>\n              <VSwitch\n                :input-value=\"hasOption('sie.import.dimensions')\"\n                :value=\"hasOption('sie.import.dimensions')\"\n                @change=\"$emit('update-options', ['sie.import.dimensions'])\"\n                hide-details\n              >\n              </VSwitch>\n            </div>\n          </div>\n        </div>\n\n        <div\n          v-else-if=\"showZettleSpecialSetting(group)\"\n          class=\"extra-settings\"\n        >\n          <div class=\"d-flex gap-1 flex-wrap align-center\">\n            <div class=\"title-label\">\n              {{ _(\"Test_environment\") }}\n            </div>\n            <VSpacer></VSpacer>\n            <div>\n              <VSwitch\n                :input-value=\"hasOption('izettle.connection.testenv')\"\n                :value=\"hasOption('izettle.connection.testenv')\"\n                @change=\"$emit('update-options', ['izettle.connection.testenv'])\"\n                hide-details\n              >\n              </VSwitch>\n            </div>\n          </div>\n        </div>\n\n        <div\n          v-else-if=\"showStripeSpecialSetting(group)\"\n          class=\"extra-settings\"\n        >\n          <div class=\"d-flex gap-1 flex-wrap align-center\">\n            <div class=\"title-label\">\n              {{ _(\"oauth2client\") }}\n            </div>\n            <VSpacer></VSpacer>\n            <div>\n              <VSwitch\n                :input-value=\"hasOption('stripeapi.connection.oauth2')\"\n                :value=\"hasOption('stripeapi.connection.oauth2')\"\n                @change=\"$emit('update-options', ['stripeapi.connection.oauth2'])\"\n                hide-details\n              >\n              </VSwitch>\n            </div>\n          </div>\n        </div>\n      </div>\n    </div>\n  </div>\n</template>\n<style lang=\"scss\">\n.overflow-btn-menu-multiple {\n  .v-select-list {\n    padding: 0;\n    display: flex;\n    flex-direction: column;\n\n    .v-list-item--disabled {\n      pointer-events: all !important;\n      min-height: 36px !important;\n      cursor: help;\n\n      .v-ripple__container {\n        display: none;\n      }\n    }\n\n    .disabled-header {\n      background: var(--v-backgroundTableHeader-base);\n      display: flex;\n      flex-direction: row;\n      width: 100%;\n      padding: 6px 10px;\n      border-top: 1px solid var(--v-border-base);\n      border-bottom: 1px solid var(--v-border-base);\n      gap: 8px;\n      align-items: center;\n\n      svg {\n        color: var(--v-title-base);\n      }\n\n      .text-wrapper {\n        display: flex;\n        flex-direction: column;\n        gap: 2px;\n\n        .title-label {\n          font-size: 13px;\n          font-weight: 500;\n          line-height: 1.2;\n        }\n\n        .byline-label {\n          font-size: 12px;\n          font-weight: 400;\n          line-height: 1.2;\n          color: var(--v-byline-base);\n        }\n      }\n    }\n  }\n\n  .v-input--selection-controls__input {\n    margin-right: 3px !important;\n  }\n\n  .v-list-item {\n    padding: 0;\n    border-bottom: 1px solid var(--v-border-lighten1);\n    min-height: auto !important;\n    pointer-events: none;\n\n    .v-btn--disabled {\n      background-color: transparent !important;\n    }\n  }\n\n  .v-list-item--highlighted {\n    color: black !important;\n\n    .v-simple-checkbox:not(.active) {\n      opacity: 0.7;\n    }\n  }\n\n  .overflow-btn-menu-row {\n    display: flex;\n    gap: 4px;\n    align-items: center;\n    width: 100%;\n    color: black !important;\n    opacity: 0.9;\n    padding: 2px 0;\n    font-size: 14px;\n    font-weight: 500;\n    min-height: 30px;\n\n    .v-icon.disabled-icon {\n      color: var(--v-title-base) !important;\n      font-size: 20px;\n      margin: 0 8px 0 4px;\n    }\n\n    .title-label {\n      color: var(--v-title-base);\n    }\n\n    .disabled-label {\n      color: var(--v-byline-base);\n      font-size: 12px;\n      font-weight: 400 !important;\n    }\n\n    .text-wrapper {\n      display: flex;\n      flex-direction: row;\n      gap: 1px;\n      text-align: left;\n      width: 100%;\n      align-items: center;\n    }\n\n    .text-wrapper-disabled {\n      padding: 0 10px;\n    }\n\n    .v-simple-checkbox.active {\n      i {\n        color: var(--v-primary-base) !important;\n      }\n    }\n\n    .v-simple-checkbox:not(.active) {\n      color: black !important;\n    }\n  }\n\n  .v-btn {\n    pointer-events: all;\n  }\n\n  .v-simple-checkbox {\n    pointer-events: none;\n  }\n\n  .v-list-item--active::before {\n    opacity: 0 !important;\n  }\n}\n\n.assistant-system-select-wrapper {\n  display: flex;\n  align-items: center;\n  gap: 10px;\n  width: 100%;\n\n  .extra-settings {\n    border: 1px solid var(--v-border-base);\n    background: var(--v-background-base);\n    padding: 10px;\n    font-size: 14px;\n    margin-top: -7px;\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n    border-bottom-left-radius: 5px;\n    border-bottom-right-radius: 5px;\n    z-index: 1;\n    margin-bottom: 4px;\n  }\n\n  .label {\n    min-width: 120px;\n  }\n}\n\n.btn-switch.v-btn {\n  background: var(--v-backgroundLight-base);\n  width: 70px;\n  padding: 10px;\n  box-shadow: none;\n  border-radius: 8px;\n  letter-spacing: 0.3px;\n  text-transform: none;\n  height: 28px !important;\n  color: #676767;\n  font-size: 13px;\n  font-weight: 500;\n}\n\n.btn-switch.v-btn.active {\n  border-width: 0;\n  background-color: var(--v-primary-base);\n  color: white;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssistantSystemSelectWrapper.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AssistantSystemSelectWrapper.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./AssistantSystemSelectWrapper.vue?vue&type=template&id=5851b73e\"\nimport script from \"./AssistantSystemSelectWrapper.vue?vue&type=script&lang=ts\"\nexport * from \"./AssistantSystemSelectWrapper.vue?vue&type=script&lang=ts\"\nimport style0 from \"./AssistantSystemSelectWrapper.vue?vue&type=style&index=0&id=5851b73e&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 { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.group)?_c('div',{staticClass:\"assistant-system-select-wrapper\"},[_c('div',{staticClass:\"d-flex full-width gap-4\"},[_c('span',{staticClass:\"label ml-2\"},[_vm._v(_vm._s(_vm._(_vm.group.label)))]),_vm._v(\" \"),_c('div',{staticClass:\"d-flex flex-col full-width\"},[_c('AssistantSystemSelect',{attrs:{\"group\":_vm.group,\"options\":_vm.options,\"disable-select\":_vm.disableSelect,\"show-disabled\":_vm.showDisabled,\"tenant-country\":_vm.tenantCountry},on:{\"click\":function($event){return _vm.$emit('click', $event)}}}),_vm._v(\" \"),(_vm.showSieSpecialSetting(_vm.group))?_c('div',{staticClass:\"extra-settings\"},[(_vm.resellerHasOption('sie.import.mailin') || _vm.resellerHasOption('sie.import.sftp'))?_c('div',{staticClass:\"d-flex flex-wrap align-center\"},[_c('div',{staticClass:\"title-label\"},[_vm._v(\"\\n            \"+_vm._s(_vm._(_vm.group.ruleTag))+\"\\n          \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('div',{staticClass:\"d-flex gap-1 flex-wrap align-center\"},[(_vm.resellerHasOption('sie.import.mailin'))?_c(VBtn,{staticClass:\"btn-switch\",class:{ 'active': _vm.hasOption('sie.import.mailin') },on:{\"click\":function($event){return _vm.$emit('update-options', ['sie.import.mailin'])}}},[_vm._v(\"\\n              \"+_vm._s(_vm._(\"sie.import.mailin\"))+\"\\n            \")]):_vm._e(),_vm._v(\" \"),(_vm.resellerHasOption('sie.import.sftp'))?_c(VBtn,{staticClass:\"btn-switch\",class:{ 'active': _vm.hasOption('sie.import.sftp') },on:{\"click\":function($event){return _vm.$emit('update-options', ['sie.import.sftp'])}}},[_vm._v(\"\\n              \"+_vm._s(_vm._(\"sie.import.sftp\"))+\"\\n            \")]):_vm._e()],1)],1):_vm._e(),_vm._v(\" \"),(_vm.resellerHasOption('sie.import.dimensions'))?_c('div',{staticClass:\"d-flex gap-1 flex-wrap align-center\"},[_c('div',{staticClass:\"title-label\"},[_vm._v(\"\\n            \"+_vm._s(_vm._(\"sie.import.dimensions\"))+\"\\n          \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('div',[_c(VSwitch,{attrs:{\"input-value\":_vm.hasOption('sie.import.dimensions'),\"value\":_vm.hasOption('sie.import.dimensions'),\"hide-details\":\"\"},on:{\"change\":function($event){return _vm.$emit('update-options', ['sie.import.dimensions'])}}})],1)],1):_vm._e()]):(_vm.showZettleSpecialSetting(_vm.group))?_c('div',{staticClass:\"extra-settings\"},[_c('div',{staticClass:\"d-flex gap-1 flex-wrap align-center\"},[_c('div',{staticClass:\"title-label\"},[_vm._v(\"\\n            \"+_vm._s(_vm._(\"Test_environment\"))+\"\\n          \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('div',[_c(VSwitch,{attrs:{\"input-value\":_vm.hasOption('izettle.connection.testenv'),\"value\":_vm.hasOption('izettle.connection.testenv'),\"hide-details\":\"\"},on:{\"change\":function($event){return _vm.$emit('update-options', ['izettle.connection.testenv'])}}})],1)],1)]):(_vm.showStripeSpecialSetting(_vm.group))?_c('div',{staticClass:\"extra-settings\"},[_c('div',{staticClass:\"d-flex gap-1 flex-wrap align-center\"},[_c('div',{staticClass:\"title-label\"},[_vm._v(\"\\n            \"+_vm._s(_vm._(\"oauth2client\"))+\"\\n          \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('div',[_c(VSwitch,{attrs:{\"input-value\":_vm.hasOption('stripeapi.connection.oauth2'),\"value\":_vm.hasOption('stripeapi.connection.oauth2'),\"hide-details\":\"\"},on:{\"change\":function($event){return _vm.$emit('update-options', ['stripeapi.connection.oauth2'])}}})],1)],1)]):_vm._e()],1)])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, PropType } from \"vue\"\nimport Locale from \"@/modules/utils/locales\"\nimport { PbTooltip } from \"@/components\"\n\nexport default defineComponent({\n  name: \"OptionsOutput\",\n\n  components: { PbTooltip },\n\n  props: {\n    title: String,\n\n    withHeaders: Boolean,\n\n    disabled: Boolean,\n\n    removeDots: {\n      type: Number,\n      default: () => 2,\n    },\n\n    disabledOptions: {\n      type: Array as PropType<string[]>,\n      default: () => [],\n    },\n\n    selectedOptions: {\n      type: Array as PropType<string[]>,\n      default: () => [],\n    },\n\n    options: {\n      type: Array as PropType<string[]>,\n      default: () => [],\n    },\n  },\n\n  methods: {\n    isChecked(item: string): boolean {\n      if (!Array.isArray(this.selectedOptions)) return false\n\n      return this.selectedOptions.includes(item)\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n\n  },\n})\n</script>\n\n<template>\n  <div class=\"opt-group-wrapper-item\">\n    <table>\n      <thead v-if=\"withHeaders\">\n        <tr>\n          <th>\n            {{ title }}\n          </th>\n        </tr>\n      </thead>\n      <tbody>\n        <template v-if=\"options?.length > 0\">\n          <tr\n            v-for=\"(opt, index) in options\"\n            :key=\"index\"\n          >\n            <td>\n              <PbTooltip\n                :text=\"opt\"\n                :open-delay=\"500\"\n                max-width=\"260\"\n              >\n                <template #activator=\"{ on }\">\n                  <span v-on=\"on\">\n                    <VCheckbox\n                      :input-value=\"isChecked(opt)\"\n                      :label=\"_(opt)\"\n                      :data-test-id=\"opt\"\n                      :disabled=\"disabled || disabledOptions.includes(opt) && isChecked(opt)\"\n                      @change=\"$emit('check', opt)\"\n                      dense\n                      hide-details\n                    >\n                    </VCheckbox>\n                  </span>\n                </template>\n              </PbTooltip>\n            </td>\n          </tr>\n        </template>\n        <template v-else>\n          <tr>\n            <td></td>\n          </tr>\n        </template>\n      </tbody>\n    </table>\n  </div>\n</template>\n\n<style\n  scoped\n  lang=\"scss\"\n>\n\n</style>","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OptionsOutput.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OptionsOutput.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./OptionsOutput.vue?vue&type=template&id=204474e6&scoped=true\"\nimport script from \"./OptionsOutput.vue?vue&type=script&lang=ts\"\nexport * from \"./OptionsOutput.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  \"204474e6\",\n  null\n  \n)\n\nexport default component.exports","import { VCheckbox } from 'vuetify/lib/components/VCheckbox';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"opt-group-wrapper-item\"},[_c('table',[(_vm.withHeaders)?_c('thead',[_c('tr',[_c('th',[_vm._v(\"\\n          \"+_vm._s(_vm.title)+\"\\n        \")])])]):_vm._e(),_vm._v(\" \"),_c('tbody',[(_vm.options?.length > 0)?_vm._l((_vm.options),function(opt,index){return _c('tr',{key:index},[_c('td',[_c('PbTooltip',{attrs:{\"text\":opt,\"open-delay\":500,\"max-width\":\"260\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('span',_vm._g({},on),[_c(VCheckbox,{attrs:{\"input-value\":_vm.isChecked(opt),\"label\":_vm._(opt),\"data-test-id\":opt,\"disabled\":_vm.disabled || _vm.disabledOptions.includes(opt) && _vm.isChecked(opt),\"dense\":\"\",\"hide-details\":\"\"},on:{\"change\":function($event){return _vm.$emit('check', opt)}}})],1)]}}],null,true)})],1)])}):[_vm._m(0)]],2)])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',[_c('td')])\n}]\n\nexport { render, staticRenderFns }","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"card-wrapper\"},[_c('div',{staticClass:\"card-header\"},[(_vm.headerTitle)?_c('span',{staticClass:\"card-title\"},[_vm._v(\"\\n      \"+_vm._s(_vm.headerTitle)+\"\\n    \")]):_vm._e(),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c(VSwitch,{staticClass:\"mr-6\",attrs:{\"label\":_vm._('View_only_selected'),\"hide-details\":\"\"},model:{value:(_vm.onlyShowSelectedGroups),callback:function ($$v) {_vm.onlyShowSelectedGroups=$$v},expression:\"onlyShowSelectedGroups\"}}),_vm._v(\" \"),_c(VTextField,{staticClass:\"pb-text-field mr-8\",attrs:{\"value\":_vm.search,\"input-value\":_vm.search,\"loading\":_vm.searching,\"placeholder\":_vm.type === 'option' ? _vm._('Search_option') : _vm._('Search_perm'),\"persistent-placeholder\":\"\",\"outlined\":\"\",\"dense\":\"\",\"hide-details\":\"\",\"clearable\":\"\",\"data-test-id\":\"search-field\",\"append-icon\":\"fas fa-magnifying-glass\"},on:{\"input\":_vm.debounceSearch}}),_vm._v(\" \"),_c(VBtn,{staticClass:\"btn-multi-check\",attrs:{\"disabled\":_vm.disabled || _vm.disabledOpts.length > 0,\"small\":\"\",\"text\":\"\",\"depressed\":\"\"},on:{\"click\":_vm.checkAll}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isAllChecked),expression:\"!isAllChecked\"}]},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-square\"}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isAllChecked),expression:\"isAllChecked\"}]},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-square-check\"}})],1)])],1),_vm._v(\" \"),(_vm.isEmptyObject(_vm.shownGroupedOptions))?_c('div',{staticClass:\"no-search-results\"},[_vm._v(\"\\n    \"+_vm._s(_vm._(\"No_matching_options\"))+\"\\n  \")]):_c('div',{staticClass:\"checkbox-list\"},_vm._l((_vm.shownGroupedOptions),function(value,key){return _c('span',{key:key,staticClass:\"opt-group\"},[_c('div',{staticClass:\"group-header\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n          \"+_vm._s(_vm.getTitle(key))+\"\\n        \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c(VBtn,{key:key + 'btn',staticClass:\"btn-multi-check\",class:{ active: _vm.isGroupChecked(key, _vm.selectedOptions) },attrs:{\"disabled\":_vm.disabled || value.every((o) => _vm.disabledOpts.includes(o)),\"small\":\"\",\"text\":\"\",\"depressed\":\"\"},on:{\"click\":function($event){return _vm.checkGroup(key)}}},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isGroupChecked(key, _vm.selectedOptions)),expression:\"!isGroupChecked(key, selectedOptions)\"}]},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-square\"}})],1),_vm._v(\" \"),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isGroupChecked(key, _vm.selectedOptions)),expression:\"isGroupChecked(key, selectedOptions)\"}]},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-square-check\"}})],1)])],1),_vm._v(\" \"),_c('div',{staticClass:\"opt-group-wrapper\"},[_c('OptionsOutput',{attrs:{\"title\":_vm._('General'),\"with-headers\":_vm.withHeaders,\"disabled\":_vm.disabled,\"disabled-options\":_vm.disabledOpts,\"selected-options\":_vm.selectedOptions,\"options\":_vm.getGeneralOpts(value),\"remove-dots\":1},on:{\"check\":function($event){return _vm.checkItem($event)}}}),_vm._v(\" \"),(_vm.withHeaders)?_c('OptionsOutput',{attrs:{\"title\":_vm._('Import'),\"with-headers\":_vm.withHeaders,\"disabled\":_vm.disabled,\"disabled-options\":_vm.disabledOpts,\"selected-options\":_vm.selectedOptions,\"options\":_vm.getImportOpts(value)},on:{\"check\":function($event){return _vm.checkItem($event)}}}):_vm._e(),_vm._v(\" \"),(_vm.withHeaders)?_c('OptionsOutput',{attrs:{\"title\":_vm._('Export'),\"with-headers\":_vm.withHeaders,\"disabled\":_vm.disabled,\"disabled-options\":_vm.disabledOpts,\"selected-options\":_vm.selectedOptions,\"options\":_vm.getExportOpts(value)},on:{\"check\":function($event){return _vm.checkItem($event)}}}):_vm._e()],1)])}),0)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, PropType } from \"vue\"\n\nimport { textMixin } from \"@/mixins\"\n\nimport Debouncer from \"@/modules/utils/debounce\"\nimport SortOptions from \"@/modules/utils/sort-options\"\nimport Util from \"@/modules/utils/util\"\nimport { _ } from \"@/modules/utils/localehelpers\"\nimport Locale from \"@/modules/utils/locales\"\nimport {\n  DebouncerType,\n} from \"@/modules/utils/debounce\"\nimport {\n  SortOptionsType,\n} from \"@/modules/utils/sort-options\"\n\nimport {\n  GroupedOptionObject,\n  EditType,\n} from \"@/types\"\n\nimport { OptionsOutput } from \"@/components\"\n\ninterface State {\n  sorter: SortOptionsType,\n  search: string | null,\n  searching: boolean,\n  debouncer: DebouncerType,\n  onlyShowSelectedGroups: boolean\n}\n\ninterface EmitResult {\n  list: string[],\n  changed: {\n    obj?: string[],\n    all?: boolean\n  },\n}\n\nexport default defineComponent({\n  name: \"CheckboxList\",\n\n  components: { OptionsOutput },\n\n  mixins: [\n    textMixin,\n  ],\n\n  props: {\n    headerTitle: String,\n\n    // Ungrouped\n    availableOptions: {\n      type: Array as PropType<Array<string>>,\n      default: () => [],\n    },\n    // Grouped\n    groupedOptions: {\n      type: Object as PropType<GroupedOptionObject>,\n      default: () => {},\n    },\n    // Tenant, Reseller, User specific\n    selectedOptions: {\n      type: Array as PropType<Array<string>>,\n      default: () => [],\n    },\n\n    disabledOpts: {\n      type: Array as PropType<Array<string>>,\n      default: () => [],\n    },\n\n    editType: {\n      type: String as PropType<EditType>,\n      default: () => EditType.Tenant,\n      required: true,\n    },\n\n    type: {\n      type: String,\n      validator: (v: string) => {\n        const validTypes = [\n          \"permission\",\n          \"option\",\n        ]\n\n        return validTypes.includes(v)\n      },\n      default: () => \"option\",\n    },\n\n    disabled: Boolean,\n  },\n\n  emits: [\n    \"change\",\n  ],\n\n  data(): State {\n    return {\n      sorter: new SortOptions(this.availableOptions || []),\n      search: null,\n      searching: false,\n      debouncer: new Debouncer(500),\n      onlyShowSelectedGroups: false,\n    }\n  },\n\n  computed: {\n    withHeaders() {\n      return this.editType === EditType.Tenant\n    },\n\n    shownOptions(): string[] {\n      const search = this.search\n\n      if (search && this.availableOptions) {\n        return this.availableOptions.filter((opt: string) => {\n          const lOpt: string = opt.toLowerCase()\n          const lSearch: string = search.toLowerCase()\n\n          return (lOpt.includes(lSearch) || _(lOpt).toLowerCase().includes(lSearch))\n        })\n      }\n\n      return this.availableOptions\n    },\n\n    shownGroupedOptions(): GroupedOptionObject {\n      if (this.search) {\n        const sorter = new SortOptions(this.shownOptions)\n        return sorter.sortOptions()\n      }\n      if (!this.onlyShowSelectedGroups) {\n        return this.groupedOptions\n      } else {\n        const filtered: GroupedOptionObject = {}\n\n        for (const [ group, options ] of Object.entries(this.groupedOptions)) {\n          const hasSelected = options.some(opt => this.selectedOptions.includes(opt))\n          if (hasSelected) {\n            filtered[group] = options\n          }\n        }\n\n        return filtered\n      }\n    },\n\n    isAllChecked(): boolean {\n      const selected = this.selectedOptions || []\n      const available = this.availableOptions || []\n\n      return selected.length === available.length\n    },\n  },\n\n  methods: {\n    getTitle(key: string): string {\n      switch (key) {\n        case \"stripe\": return Locale.translate(\"stripe-file\")\n        default: return Locale.translate(key)\n      }\n    },\n\n    isGroupChecked(key: string, options: string[]): boolean {\n      if (!Array.isArray(options)) return false\n      const group = this.groupedOptions[key]\n\n      if (!Array.isArray(group)) return false\n\n      return group.every((opt) => options.includes(opt))\n    },\n\n    doSearch(val: any): void {\n      if (!val || (val && val.length < 1)) this.search = null\n      else {\n        this.search = val\n      }\n\n      this.searching = false\n    },\n\n    debounceSearch(val: any): void {\n      this.searching = true\n      this.debouncer.debounce(() => this.doSearch(val))\n    },\n\n    getGeneralOpts(opts: string[]): string[] {\n      return opts\n        .filter(\n          (str) => !str.includes(\".import.\") && !str.includes(\".export.\")\n        )\n        .sort()\n    },\n\n    getExportOpts(opts: string[]): string[] {\n      return opts.filter((str) => str.includes(\".export.\")).sort()\n    },\n\n    getImportOpts(opts: string[]): string[] {\n      return opts.filter((str) => str.includes(\".import.\")).sort()\n    },\n\n    getOptText(opt: string): string | undefined {\n      const parts = opt.split(\".\")\n      const lastPart = parts[parts.length - 1]\n\n      if (lastPart && Util.isString(lastPart)) {\n        return Locale.capitalize(lastPart)\n      }\n\n      return undefined\n    },\n\n    checkAll(): void {\n      if (this.isAllChecked) {\n        const result: EmitResult = {\n          list: this.disabledOpts,\n          changed: {\n            all: true,\n          },\n        }\n\n        this.emit(result)\n      } else {\n        const result: EmitResult = {\n          list: this.availableOptions,\n          changed: {\n            all: true,\n          },\n        }\n\n        this.emit(result)\n      }\n    },\n\n    checkGroup(value: keyof GroupedOptionObject): void {\n      const optionGroup = this.groupedOptions[value]\n      if (Array.isArray(optionGroup)) {\n        const disabled = this.disabledOpts.filter((o) =>\n          optionGroup.includes(o)\n        )\n\n        const result = this.sorter\n          .checkOptions(optionGroup, this.selectedOptions, false)\n          .concat(disabled)\n\n        const unique = Array.of(...new Set(result))\n\n        const emitResult: EmitResult = {\n          list: unique,\n          changed: {\n            obj: Array.of(\n              ...new Set(optionGroup.concat(disabled))\n            ),\n          },\n        }\n\n        this.emit(emitResult)\n      }\n    },\n\n    checkItem(item: string): void {\n      const copy: string[] = Util.deepClone(this.selectedOptions)\n      const index = copy.findIndex((o) => o === item)\n\n      if (index === -1) {\n        copy.push(item)\n      } else {\n        copy.splice(index, 1)\n      }\n\n      const result: EmitResult = {\n        list: copy,\n        changed: {\n          obj: [ item ],\n        },\n      }\n\n      this.emit(result)\n    },\n\n    emit(payload: EmitResult) {\n      this.$emit(\"change\", payload)\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n\n    isEmptyObject(obj: any): boolean {\n      return Util.isEmptyObject(obj)\n    },\n  },\n})\n</script>\n<template>\n  <div class=\"card-wrapper\">\n    <div class=\"card-header\">\n      <span\n        v-if=\"headerTitle\"\n        class=\"card-title\"\n      >\n        {{ headerTitle }}\n      </span>\n      <VSpacer></VSpacer>\n\n      <VSwitch\n        v-model=\"onlyShowSelectedGroups\"\n        :label=\"_('View_only_selected')\"\n        hide-details\n        class=\"mr-6\"\n      >\n      </VSwitch>\n\n      <VTextField\n        :value=\"search\"\n        :input-value=\"search\"\n        :loading=\"searching\"\n        :placeholder=\"type === 'option' ? _('Search_option') : _('Search_perm')\"\n        @input=\"debounceSearch\"\n        persistent-placeholder\n        outlined\n        dense\n        hide-details\n        clearable\n        data-test-id=\"search-field\"\n        append-icon=\"fas fa-magnifying-glass\"\n        class=\"pb-text-field mr-8\"\n      >\n      </VTextField>\n\n      <VBtn\n        :disabled=\"disabled || disabledOpts.length > 0\"\n        @click=\"checkAll\"\n        small\n        text\n        depressed\n        class=\"btn-multi-check\"\n      >\n        <div v-show=\"!isAllChecked\">\n          <FontAwesomeIcon icon=\"far fa-square\">\n          </FontAwesomeIcon>\n        </div>\n\n        <div v-show=\"isAllChecked\">\n          <FontAwesomeIcon icon=\"far fa-square-check\">\n          </FontAwesomeIcon>\n        </div>\n      </VBtn>\n    </div>\n\n    <div\n      v-if=\"isEmptyObject(shownGroupedOptions)\"\n      class=\"no-search-results\"\n    >\n      {{ _(\"No_matching_options\") }}\n    </div>\n\n    <div\n      v-else\n      class=\"checkbox-list\"\n    >\n      <span\n        v-for=\"(value, key) in shownGroupedOptions\"\n        class=\"opt-group\"\n        :key=\"key\"\n      >\n        <div class=\"group-header\">\n          <span class=\"title-label\">\n            {{ getTitle(key) }}\n          </span>\n          <VSpacer></VSpacer>\n\n          <VBtn\n            :class=\"{ active: isGroupChecked(key, selectedOptions) }\"\n            :disabled=\"disabled || value.every((o) => disabledOpts.includes(o))\"\n            @click=\"checkGroup(key)\"\n            small\n            text\n            depressed\n            class=\"btn-multi-check\"\n            :key=\"key + 'btn'\"\n          >\n            <div v-show=\"!isGroupChecked(key, selectedOptions)\">\n              <FontAwesomeIcon icon=\"far fa-square\"> </FontAwesomeIcon>\n            </div>\n\n            <div v-show=\"isGroupChecked(key, selectedOptions)\">\n              <FontAwesomeIcon icon=\"far fa-square-check\">\n              </FontAwesomeIcon>\n            </div>\n          </VBtn>\n        </div>\n\n        <div class=\"opt-group-wrapper\">\n\n          <OptionsOutput\n            :title=\"_('General')\"\n            :with-headers=\"withHeaders\"\n            :disabled=\"disabled\"\n            :disabled-options=\"disabledOpts\"\n            :selected-options=\"selectedOptions\"\n            :options=\"getGeneralOpts(value)\"\n            :remove-dots=\"1\"\n            @check=\"checkItem($event)\"\n          >\n          </OptionsOutput>\n\n          <OptionsOutput\n            v-if=\"withHeaders\"\n            :title=\"_('Import')\"\n            :with-headers=\"withHeaders\"\n            :disabled=\"disabled\"\n            :disabled-options=\"disabledOpts\"\n            :selected-options=\"selectedOptions\"\n            :options=\"getImportOpts(value)\"\n            @check=\"checkItem($event)\"\n          >\n          </OptionsOutput>\n\n          <OptionsOutput\n            v-if=\"withHeaders\"\n            :title=\"_('Export')\"\n            :with-headers=\"withHeaders\"\n            :disabled=\"disabled\"\n            :disabled-options=\"disabledOpts\"\n            :selected-options=\"selectedOptions\"\n            :options=\"getExportOpts(value)\"\n            @check=\"checkItem($event)\"\n          >\n          </OptionsOutput>\n\n        </div>\n      </span>\n    </div>\n  </div>\n</template>\n<style scoped lang=\"scss\">\n.perm-btn {\n  color: var(--v-byline-base);\n  text-transform: none !important;\n  padding: 4px 10px !important;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CheckboxList.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CheckboxList.vue?vue&type=template&id=7470101e&scoped=true\"\nimport script from \"./CheckboxList.vue?vue&type=script&lang=ts\"\nexport * from \"./CheckboxList.vue?vue&type=script&lang=ts\"\nimport style0 from \"./CheckboxList.vue?vue&type=style&index=0&id=7470101e&prod&scoped=true&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  \"7470101e\",\n  null\n  \n)\n\nexport default component.exports","<script lang=\"ts\">\nimport moment, { Moment } from \"moment\"\nimport { defineComponent, PropType } from \"vue\"\n\nimport Debouncer, { DebouncerType } from \"@/modules/utils/debounce\"\nimport VueHelper from \"@/modules/utils/vuehelper\"\nimport Util from \"@/modules/utils/util\"\nimport { _ } from \"@/modules/utils/localehelpers\"\nimport Locale from \"@/modules/utils/locales\"\n\ninterface State {\n  date: string | null,\n  dateTime: Moment | null | undefined,\n  time: string | null,\n  menu: boolean,\n  debouncer: DebouncerType\n}\n\nexport default defineComponent({\n  props: {\n    value: null,\n\n    // eslint-disable-next-line\n    isDateAllowed: Function as PropType<(val: any) => boolean>,\n\n    placeholder: {\n      type: String,\n      default: () => _(\"Unset\"),\n    },\n\n    showTime: {\n      type: Boolean,\n      default: () => true,\n    },\n    // Clearable - set to null\n    withClear: Boolean,\n    // Resettable - set to today's date\n    withReset: Boolean,\n\n    required: Boolean,\n\n    disableInput: Boolean,\n  },\n\n  data(): State {\n    return {\n      date: null,\n      dateTime: null,\n      menu: false,\n      time: null,\n\n      debouncer: new Debouncer(),\n    }\n  },\n\n  watch: {\n    date(val: string) {\n      if (!Util.isSet(val)) return\n\n      let [ yearStr, monthStr, dateStr ] = val.split(\"-\")\n\n      if (!Util.isSet(yearStr) || !Util.isSet(monthStr) || !Util.isSet(dateStr)) return\n\n      const year = parseInt(yearStr)\n      // Months are 1-indexed\n      const month = parseInt(monthStr) - 1\n      const date = parseInt(dateStr)\n\n      if (!this.dateTime) {\n        this.dateTime = moment().local()\n        this.time = \"00:00\"\n        const [ hours, minutes ] = this.time.split(\":\")\n\n        if (Util.isSet(hours) && Util.isSet(minutes)) {\n          this.dateTime = this.dateTime.set({\n            hour: parseInt(hours),\n            minute: parseInt(minutes),\n          })\n        }\n      }\n\n      this.dateTime = this.dateTime.set({\n        year: year,\n        month: month,\n        date: date,\n      })\n    },\n\n    time(val: string) {\n      if (!Util.isSet(val)) return\n\n      const [ hours, minutes ] = val.split(\":\")\n      const zonified = this.timeHelper(this.dateTime)\n\n      if (zonified) {\n        if (Util.isSet(hours) && Util.isSet(minutes)) {\n          this.dateTime = zonified.set({ hour: parseInt(hours), minute: parseInt(minutes) })\n        }\n      }\n    },\n\n    dateTime(val: Moment) {\n      if (Util.isSet(val)) {\n        const format = val.toISOString().slice(0, -8) + \":00Z\"\n\n        this.$emit(\"change\", format)\n      } else {\n        this.$emit(\"change\", null)\n      }\n    },\n\n    value(newVal, oldVal) {\n      if (newVal !== oldVal) this.setValue()\n    },\n  },\n\n  mounted() {\n    if (this.value) {\n      this.setValue()\n    }\n  },\n\n  methods: {\n    /* Clear datetime select */\n    reset() {\n      this.date = new Date().toISOString().slice(0, 10)\n      this.time = \"00:00\"\n    },\n\n    /* Set to null - clear the date  */\n    clear() {\n      this.dateTime = null\n      this.date = null\n      this.time = null\n    },\n\n    /* Init datetime select after setting value externally */\n    setValue() {\n      if (this.value) {\n        this.dateTime = this.timeHelper(this.value)\n\n        if (this.dateTime) {\n          this.date = this.dateTime.format(\"YYYY-MM-DD\")\n          this.time = this.dateTime.format(\"HH:mm\")\n        }\n      }\n    },\n\n    timeHelper(value: any): Moment | undefined {\n      if (!Util.isSet(value) && !this.withClear) {\n        value = moment().local()\n      }\n\n      const zonifiedDateTime = moment(value, moment.ISO_8601).local()\n\n      if (zonifiedDateTime.isValid()) return zonifiedDateTime\n      else return undefined\n    },\n\n    setValueAndClose(date: string) {\n      this.date = date\n\n      /** @ts-ignore */\n      VueHelper.waitForRender(this, \"menu\", null).then(\n        /** @ts-ignore */\n        (menu) => (menu.isActive = false)\n      )\n    },\n\n    debounceDate(date: string) {\n      this.debouncer.debounce(() => {\n        if (moment(date, moment.ISO_8601).isValid()) {\n          this.date = date\n        }\n      })\n    },\n\n    isSet(val: any): boolean {\n      return Util.isSet(val)\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n</script>\n<template>\n  <div class=\"d-flex datetime-row full-height\">\n    <div\n      :class=\"{ 'border-light-r': dateTime !== null }\"\n      class=\"d-flex\"\n    >\n      <div class=\"datetime-pre-icon\">\n        <FontAwesomeIcon icon=\"fa-regular fa-calendar-days\">\n        </FontAwesomeIcon>\n      </div>\n      <VMenu\n        v-model=\"menu\"\n        :close-on-content-click=\"false\"\n        offset-y\n        transition=\"scale-transition\"\n        min-width=\"auto\"\n        ref=\"menu\"\n      >\n        <template #activator=\"{ on }\">\n          <div v-on=\"on\">\n            <VTextField\n              :value=\"date\"\n              :placeholder=\"placeholder\"\n              :required=\"required\"\n              :error=\"required ? !isSet(date) : false\"\n              :disabled=\"disableInput\"\n              :class=\"{ 'disable-input': disableInput }\"\n              @input=\"debounceDate($event)\"\n              persistent-placeholder\n              hide-details\n              dense\n              outlined\n              class=\"date-field\"\n            ></VTextField>\n          </div>\n        </template>\n        <VDatePicker\n          :value=\"date\"\n          :allowed-dates=\"isDateAllowed\"\n          @change=\"setValueAndClose($event)\"\n          no-title\n          scrollable\n          show-current\n          color=\"primary\"\n        >\n        </VDatePicker>\n      </VMenu>\n    </div>\n    <div\n      v-if=\"dateTime && showTime\"\n      class=\"d-flex\"\n    >\n      <Timepicker\n        :value=\"time\"\n        @change=\"time = $event\"\n        ref=\"timepicker\"\n      >\n      </Timepicker>\n    </div>\n\n    <div\n      v-if=\"withClear && dateTime !== null\"\n      class=\"reset\"\n    >\n      <VBtn\n        @click=\"clear\"\n        depressed\n        icon\n      >\n        <FontAwesomeIcon icon=\"fa-solid fa-circle-xmark\">\n        </FontAwesomeIcon>\n      </VBtn>\n    </div>\n\n    <div\n      v-if=\"withReset && dateTime !== null\"\n      class=\"reset\"\n    >\n      <VTooltip\n        attach\n        right\n        min-width=\"200\"\n        open-delay=\"500\"\n      >\n        <template #activator=\"{ on }\">\n          <VBtn\n            v-on=\"on\"\n            @click=\"reset\"\n            depressed\n            icon\n          >\n            <FontAwesomeIcon icon=\"fa-solid fa-arrow-rotate-left\">\n            </FontAwesomeIcon>\n          </VBtn>\n        </template>\n        <span>\n          {{ _(\"Date_time_select_tooltip\") }}\n        </span>\n      </VTooltip>\n    </div>\n  </div>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatetimeSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DatetimeSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DatetimeSelect.vue?vue&type=template&id=985289ce&scoped=true\"\nimport script from \"./DatetimeSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./DatetimeSelect.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  \"985289ce\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"d-flex datetime-row full-height\"},[_c('div',{staticClass:\"d-flex\",class:{ 'border-light-r': _vm.dateTime !== null }},[_c('div',{staticClass:\"datetime-pre-icon\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fa-regular fa-calendar-days\"}})],1),_vm._v(\" \"),_c(VMenu,{ref:\"menu\",attrs:{\"close-on-content-click\":false,\"offset-y\":\"\",\"transition\":\"scale-transition\",\"min-width\":\"auto\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('div',_vm._g({},on),[_c(VTextField,{staticClass:\"date-field\",class:{ 'disable-input': _vm.disableInput },attrs:{\"value\":_vm.date,\"placeholder\":_vm.placeholder,\"required\":_vm.required,\"error\":_vm.required ? !_vm.isSet(_vm.date) : false,\"disabled\":_vm.disableInput,\"persistent-placeholder\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"outlined\":\"\"},on:{\"input\":function($event){return _vm.debounceDate($event)}}})],1)]}}]),model:{value:(_vm.menu),callback:function ($$v) {_vm.menu=$$v},expression:\"menu\"}},[_vm._v(\" \"),_c(VDatePicker,{attrs:{\"value\":_vm.date,\"allowed-dates\":_vm.isDateAllowed,\"no-title\":\"\",\"scrollable\":\"\",\"show-current\":\"\",\"color\":\"primary\"},on:{\"change\":function($event){return _vm.setValueAndClose($event)}}})],1)],1),_vm._v(\" \"),(_vm.dateTime && _vm.showTime)?_c('div',{staticClass:\"d-flex\"},[_c('Timepicker',{ref:\"timepicker\",attrs:{\"value\":_vm.time},on:{\"change\":function($event){_vm.time = $event}}})],1):_vm._e(),_vm._v(\" \"),(_vm.withClear && _vm.dateTime !== null)?_c('div',{staticClass:\"reset\"},[_c(VBtn,{attrs:{\"depressed\":\"\",\"icon\":\"\"},on:{\"click\":_vm.clear}},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fa-solid fa-circle-xmark\"}})],1)],1):_vm._e(),_vm._v(\" \"),(_vm.withReset && _vm.dateTime !== null)?_c('div',{staticClass:\"reset\"},[_c(VTooltip,{attrs:{\"attach\":\"\",\"right\":\"\",\"min-width\":\"200\",\"open-delay\":\"500\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"depressed\":\"\",\"icon\":\"\"},on:{\"click\":_vm.reset}},on),[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fa-solid fa-arrow-rotate-left\"}})],1)]}}],null,false,1114973194)},[_vm._v(\" \"),_c('span',[_vm._v(\"\\n        \"+_vm._s(_vm._(\"Date_time_select_tooltip\"))+\"\\n      \")])])],1):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, PropType } from \"vue\"\n\nimport Debouncer, { DebouncerType } from \"@/modules/utils/debounce\"\nimport Util from \"@/modules/utils/util\"\n\nimport { _ } from \"@/modules/utils/localehelpers\"\n\nimport {\n  Header,\n  FilterClauses,\n  SortableAndFilterableType,\n} from \"@/types\"\n\ninterface State {\n  debouncer: DebouncerType,\n  item: RangeItem | undefined,\n  value: any\n}\n\ntype AllowedFilterTypes = FilterClauses.EQ | FilterClauses.GT | FilterClauses.LT | FilterClauses.Contains\n\ninterface RangeItem {\n  text: string,\n  shortText: string,\n  type: AllowedFilterTypes,\n}\n\nconst rangeItemsDef: Record<AllowedFilterTypes, RangeItem> = {\n  [FilterClauses.EQ]: {\n    text: `${_(\"Equals\")}`,\n    shortText: \"=\",\n    type: FilterClauses.EQ,\n  },\n  [FilterClauses.GT]: {\n    text: `${_(\"MoreThan\")}`,\n    shortText: \">\",\n    type: FilterClauses.GT,\n  },\n  [FilterClauses.LT]: {\n    text: `${_(\"LessThan\")}`,\n    shortText: \"<\",\n    type: FilterClauses.LT,\n  },\n  [FilterClauses.Contains]: {\n    text: `${_(\"Contains\")}`,\n    shortText: \"≈\",\n    type: FilterClauses.Contains,\n  },\n}\n\nconst getDefaultRangeItems = (filterType: SortableAndFilterableType): RangeItem[] => {\n  if (filterType === \"string\") {\n    return [\n      rangeItemsDef[FilterClauses.Contains],\n      rangeItemsDef[FilterClauses.EQ],\n    ]\n  }\n  else {\n    return [\n      rangeItemsDef[FilterClauses.EQ],\n      rangeItemsDef[FilterClauses.GT],\n      rangeItemsDef[FilterClauses.GT],\n    ]\n  }\n}\n\nexport default defineComponent({\n  props: {\n    header: Object as PropType<Header>,\n  },\n\n  data(): State {\n    return {\n      item: undefined,\n      value: undefined,\n      debouncer: new Debouncer(),\n    }\n  },\n\n  computed: {\n    rangeItems(): RangeItem[] {\n      return getDefaultRangeItems(this.header?.filterType || \"string\")\n    },\n  },\n\n  mounted() {\n    const items = this.rangeItems\n\n    if (!this.item) this.item = items[0]\n  },\n\n  methods: {\n    changeItem(item: RangeItem) {\n      this.item = item\n      this.updateFilters()\n    },\n\n    updateFilters() {\n      if (!this.item || !this.header) return\n\n      const field = this.header.filterField || this.header.value\n      const condition = this.item.type\n      const valueType = this.header.filterType || \"str\"\n\n      if (this.value) {\n        this.$emit(\"change\", {\n          filter: {\n            field: field,\n            type: condition,\n            value: {\n              value: this.value,\n              type: valueType,\n            },\n          },\n        })\n      } else {\n        this.$emit(\"change\", {\n          filter: {\n            field: field,\n            type: condition,\n            value: {\n              value: this.value,\n              type: valueType,\n            },\n          },\n          add: false,\n        })\n      }\n    },\n\n    handleTextChange(text: string) {\n      if (text.length > 0) {\n        this.value = text\n      }\n      else {\n        this.value = undefined\n      }\n\n      this.debouncer.debounce(this.updateFilters)\n    },\n\n    isSet(val: any) {\n      return Util.isSet(val)\n    },\n  },\n})\n</script>\n<template>\n  <div class=\"range-search d-flex align-center\">\n    <VMenu>\n      <template #activator=\"{ on, attrs }\">\n        <div\n          v-if=\"item !== undefined\"\n          :attrs=\"attrs\"\n          v-on=\"on\"\n          class=\"cursor-pointer\"\n        >\n          <span v-show=\"isSet(value)\">\n            <img\n              v-if=\"item?.['type'] === 'substring'\"\n              class=\"filter-icon\"\n              src=\"/public/assets/images/icon-contains.svg\"\n            />\n            <img\n              v-else-if=\"item?.['type'] === 'eq'\"\n              class=\"filter-icon\"\n              src=\"/public/assets/images/icon-equals.svg\"\n            />\n            <img\n              v-else-if=\"item?.['type'] === 'gt'\"\n              class=\"filter-icon\"\n              src=\"/public/assets/images/icon-more.svg\"\n            />\n            <img\n              v-else-if=\"item?.['type'] === 'lt'\"\n              class=\"filter-icon\"\n              src=\"/public/assets/images/icon-less.svg\"\n            />\n            <span\n              v-else\n              class=\"filter-badge\"\n            >\n              {{ item?.shortText }}\n            </span>\n          </span>\n        </div>\n      </template>\n\n      <VList\n        dense\n        class=\"filter-dropdown\"\n      >\n        <VListItemGroup>\n          <VListItem\n            v-for=\"(rangeItem, i) in rangeItems\"\n            @click=\"changeItem(rangeItem)\"\n            :key=\"'rangeItem' + i\"\n          >\n            <VListItemContent>\n              <VListItemTitle class=\"d-flex\">\n                <span class=\"ml-1\">\n                  <img\n                    v-if=\"rangeItem?.['type'] === 'substring'\"\n                    class=\"filter-icon\"\n                    src=\"/public/assets/images/icon-contains.svg\"\n                  />\n                  <img\n                    v-else-if=\"rangeItem?.['type'] === 'eq'\"\n                    class=\"filter-icon\"\n                    src=\"/public/assets/images/icon-equals.svg\"\n                  />\n                  <img\n                    v-else-if=\"rangeItem?.['type'] === 'gt'\"\n                    class=\"filter-icon\"\n                    src=\"/public/assets/images/icon-more.svg\"\n                  />\n                  <img\n                    v-else-if=\"rangeItem?.['type'] === 'lt'\"\n                    class=\"filter-icon\"\n                    src=\"/public/assets/images/icon-less.svg\"\n                  />\n                  <span\n                    v-else\n                    class=\"filter-badge\"\n                  >\n                    {{ rangeItem?.['shortText'] }}\n                  </span>\n                </span>\n\n                <span>{{ rangeItem?.['text'] }}</span>\n              </VListItemTitle>\n            </VListItemContent>\n          </VListItem>\n        </VListItemGroup>\n      </VList>\n    </VMenu>\n\n    <div class=\"d-flex full-width\">\n      <VTextField\n        :value=\"value\"\n        @input=\"handleTextChange($event)\"\n        @keydown.enter=\"handleTextChange(value)\"\n        hide-details\n        persistent-placeholder\n        prepend-inner-icon=\"fas fa-magnifying-glass\"\n        class=\"transparent range-search-text-field\"\n      >\n      </VTextField>\n    </div>\n  </div>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RangeSearch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RangeSearch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./RangeSearch.vue?vue&type=template&id=7b150d38&scoped=true\"\nimport script from \"./RangeSearch.vue?vue&type=script&lang=ts\"\nexport * from \"./RangeSearch.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  \"7b150d38\",\n  null\n  \n)\n\nexport default component.exports","import { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } 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';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"range-search d-flex align-center\"},[_c(VMenu,{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [(_vm.item !== undefined)?_c('div',_vm._g({staticClass:\"cursor-pointer\",attrs:{\"attrs\":attrs}},on),[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isSet(_vm.value)),expression:\"isSet(value)\"}]},[(_vm.item?.['type'] === 'substring')?_c('img',{staticClass:\"filter-icon\",attrs:{\"src\":\"/public/assets/images/icon-contains.svg\"}}):(_vm.item?.['type'] === 'eq')?_c('img',{staticClass:\"filter-icon\",attrs:{\"src\":\"/public/assets/images/icon-equals.svg\"}}):(_vm.item?.['type'] === 'gt')?_c('img',{staticClass:\"filter-icon\",attrs:{\"src\":\"/public/assets/images/icon-more.svg\"}}):(_vm.item?.['type'] === 'lt')?_c('img',{staticClass:\"filter-icon\",attrs:{\"src\":\"/public/assets/images/icon-less.svg\"}}):_c('span',{staticClass:\"filter-badge\"},[_vm._v(\"\\n            \"+_vm._s(_vm.item?.shortText)+\"\\n          \")])])]):_vm._e()]}}])},[_vm._v(\" \"),_c(VList,{staticClass:\"filter-dropdown\",attrs:{\"dense\":\"\"}},[_c(VListItemGroup,_vm._l((_vm.rangeItems),function(rangeItem,i){return _c(VListItem,{key:'rangeItem' + i,on:{\"click\":function($event){return _vm.changeItem(rangeItem)}}},[_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"d-flex\"},[_c('span',{staticClass:\"ml-1\"},[(rangeItem?.['type'] === 'substring')?_c('img',{staticClass:\"filter-icon\",attrs:{\"src\":\"/public/assets/images/icon-contains.svg\"}}):(rangeItem?.['type'] === 'eq')?_c('img',{staticClass:\"filter-icon\",attrs:{\"src\":\"/public/assets/images/icon-equals.svg\"}}):(rangeItem?.['type'] === 'gt')?_c('img',{staticClass:\"filter-icon\",attrs:{\"src\":\"/public/assets/images/icon-more.svg\"}}):(rangeItem?.['type'] === 'lt')?_c('img',{staticClass:\"filter-icon\",attrs:{\"src\":\"/public/assets/images/icon-less.svg\"}}):_c('span',{staticClass:\"filter-badge\"},[_vm._v(\"\\n                  \"+_vm._s(rangeItem?.['shortText'])+\"\\n                \")])]),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(rangeItem?.['text']))])])],1)],1)}),1)],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"d-flex full-width\"},[_c(VTextField,{staticClass:\"transparent range-search-text-field\",attrs:{\"value\":_vm.value,\"hide-details\":\"\",\"persistent-placeholder\":\"\",\"prepend-inner-icon\":\"fas fa-magnifying-glass\"},on:{\"input\":function($event){return _vm.handleTextChange($event)},\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.handleTextChange(_vm.value)}}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport moment, { Moment } from \"moment\"\nimport { defineComponent, PropType } from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\nimport VueHelper from \"@/modules/utils/vuehelper\"\nimport {\n  _,\n} from \"@/modules/utils/localehelpers\"\n\nimport {\n  Header,\n  And,\n} from \"@/types\"\n\nimport {\n  DatetimeSelect,\n} from \"@/components\"\n\ninterface State {\n  from: string | undefined\n  to: string | undefined\n  exact: string | undefined\n\n  tempFrom: string | undefined\n  tempTo: string | undefined\n  tempExact: string | undefined\n\n  exactDate: boolean\n  dialog: boolean\n}\n\nexport default defineComponent({\n  components: {\n    DatetimeSelect,\n  },\n\n  props: {\n    header: Object as PropType<Header>,\n  },\n\n  data(): State {\n    return {\n      // Variables that are saved when dialog is closed\n      from: undefined,\n      to: undefined,\n      exact: undefined,\n\n      // Temp variables, will be reset after dialog closes\n      tempFrom: undefined,\n      tempTo: undefined,\n      tempExact: undefined,\n\n      // Flags\n      exactDate: false,\n      dialog: false,\n    }\n  },\n\n  computed: {\n    beforeDateIsActive() {\n      return Util.isSet(this.tempTo) || Util.isSet(this.to)\n    },\n\n    afterDateIsActive() {\n      return Util.isSet(this.tempFrom) || Util.isSet(this.from)\n    },\n\n    /* If before and after are active OR ELSE if exact is active. */\n    bothIntervalsAreActive() {\n      if (this.beforeDateIsActive && this.afterDateIsActive) {\n        return true\n      } else if (!this.beforeDateIsActive && !this.afterDateIsActive) {\n        /* Before and after needs to be false when active is true */\n        return Util.isSet(this.exact) || Util.isSet(this.tempExact)\n      }\n      return false\n    },\n\n    filterIsActive() {\n      return (\n        Util.isSet(this.from) || Util.isSet(this.to) || Util.isSet(this.exact)\n      )\n    },\n\n    filterBtnIsValid() {\n      return (\n        Util.isSet(this.tempFrom) ||\n          Util.isSet(this.tempTo) ||\n          Util.isSet(this.tempExact)\n      )\n    },\n  },\n\n  watch: {\n    exactDate() {\n      this.reset()\n    },\n\n    dialog(val) {\n      if (val) {\n        this.tempTo = this.to\n        this.tempFrom = this.from\n        this.tempExact = this.exact\n        this.initDateSelects()\n      } else {\n        /* Reset after close */\n        this.reset()\n      }\n    },\n  },\n\n  methods: {\n    clearFilter() {\n      if (!this.header) return\n\n      const field = this.header?.filterField || this.header.value\n\n      this.$emit(\"change\", {\n        filter: {\n          field,\n          type: \"eq\",\n          value: {\n            value: null,\n            type: \"str\",\n          },\n        },\n        add: false,\n      })\n\n      this.$emit(\"change\", {\n        filter: {\n          type: \"and\",\n          subclauses: [\n            {\n              field,\n              type: \"eq\",\n              value: {\n                value: null,\n                type: \"str\",\n              },\n            },\n          ],\n        },\n        add: false,\n      })\n\n      this.reset()\n\n      this.to = undefined\n      this.from = undefined\n      this.exact = undefined\n    },\n\n    removeFilter(multiple: boolean) {\n      if (!this.header) return\n\n      const getDummyFilter = () => {\n        if (multiple) {\n          return {\n            type: \"and\",\n            subclauses: [\n              {\n                field,\n                type: \"eq\",\n                value: {\n                  value: null,\n                  type: \"str\",\n                },\n              },\n            ],\n          }\n        } else {\n          return {\n            field,\n            type: \"eq\",\n            value: {\n              value: null,\n              type: \"str\",\n            },\n          }\n        }\n      }\n\n      const field = this.header.filterField || this.header.value\n\n      this.$emit(\"change\", {\n        filter: getDummyFilter(),\n        add: false,\n      })\n    },\n\n    doFilter() {\n      if (!this.header) return\n\n      if (this.exactDate) {\n        const daySpan = this.createDaySpan(this.tempExact)\n        if (daySpan) {\n          const [ beforeDate, afterDate ] = daySpan\n\n          const field = this.header?.filterField || this.header.value\n          let valueType = this.header.filterType\n\n          if (this.to || this.from) this.removeFilter(false)\n\n          const andFilter: And = {\n            type: \"and\",\n            subclauses: [\n              {\n                field: field,\n                type: \"ge\",\n                value: {\n                  value: beforeDate,\n                  type: valueType,\n                },\n              },\n              {\n                field: field,\n                type: \"le\",\n                value: {\n                  value: afterDate,\n                  type: valueType,\n                },\n              },\n            ],\n          }\n\n          this.$emit(\"change\", {\n            filter: andFilter,\n          })\n\n          this.exact = this.tempExact\n          this.to = undefined\n          this.from = undefined\n        }\n      } else if (\n        this.bothIntervalsAreActive &&\n          this.tempFrom &&\n          this.tempTo\n      ) {\n        const field = this.header.filterField || this.header.value\n        let valueType = this.header.filterType\n\n        if (this.exact) this.removeFilter(true)\n\n        const start = this.startOfDay(this.tempFrom)\n        const end = this.endOfDay(this.tempTo)\n\n        const andFilter: And = {\n          type: \"and\",\n          subclauses: [\n            {\n              field: field,\n              type: \"ge\",\n              value: {\n                value: start,\n                type: valueType,\n              },\n            },\n            {\n              field: field,\n              type: \"le\",\n              value: {\n                value: end,\n                type: valueType,\n              },\n            },\n          ],\n        }\n\n        this.$emit(\"change\", {\n          filter: andFilter,\n        })\n\n        this.from = this.tempFrom\n        this.to = this.tempTo\n        this.exact = undefined\n      } else if (this.tempTo || this.tempFrom) {\n        const field = this.header?.filterField || this.header.value\n        let valueType = this.header.filterType\n\n        const value = Util.isSet(this.tempTo)\n          ? this.endOfDay(this.tempTo)\n          : this.startOfDay(this.tempFrom)\n\n        const condition = this.tempTo ? \"le\" : \"ge\"\n\n        if (this.bothIntervalsAreActive || this.exact) this.removeFilter(true)\n\n        this.$emit(\"change\", {\n          filter: {\n            field: field,\n            type: condition,\n            value: {\n              value: value,\n              type: valueType,\n            },\n          },\n        })\n\n        if (this.tempTo) {\n          this.to = this.tempTo\n          this.from = undefined\n        } else {\n          this.from = this.tempFrom\n          this.to = undefined\n        }\n        this.exact = undefined\n      }\n\n      this.dialog = false\n    },\n\n    openDialog() {\n      this.dialog = true\n      this.initDateSelects()\n    },\n\n    startOfDay(date: string | undefined): string | null {\n      if (!date) return null\n      return moment(date).startOf(\"day\").format()\n    },\n\n    endOfDay(date: string | undefined): string | null {\n      if (!date) return null\n      return moment(date).endOf(\"day\").format()\n    },\n\n    createDaySpan(value: string | undefined): [ Moment, Moment ] | null {\n      if (!value) return null\n\n      const beforeDate = moment(this.startOfDay(value))\n      const afterDate = moment(this.endOfDay(value))\n\n      if (!beforeDate.isValid() || !afterDate.isValid()) return null\n\n      return [ beforeDate, afterDate ]\n    },\n\n    /* Prevents the user from selecting dates that are unavailable */\n    isDateAllowed(date: string, id?: string) {\n      const momentDate = moment(date)\n\n      /* Can't search for the future */\n      if (momentDate.isAfter(moment.now())) {\n        return false\n      }\n\n      if (this.tempTo || this.tempFrom || this.tempExact) {\n        if (Util.isSet(this.tempFrom) && id === \"to\") {\n          /* To can't be before from */\n          if (momentDate.isBefore(moment(this.tempFrom))) {\n            return false\n          }\n        }\n\n        if (Util.isSet(this.tempTo) && id === \"from\") {\n          /* From can't be after to */\n          if (momentDate.isAfter(moment(this.tempTo))) {\n            return false\n          }\n        }\n      }\n\n      return true\n    },\n\n    formatLocalDate(date: string): string {\n      return moment(date).local().format(\"YYYY-MM-DD\")\n    },\n\n    reset() {\n      this.tempExact = undefined\n\n      // @ts-ignore this\n      VueHelper.waitForRender(this, \"exactDateTime\", \"clear\").then(\n        (dateTime) => {\n          // @ts-ignore\n          dateTime.clear()\n        }\n      )\n\n      this.tempFrom = undefined\n      // @ts-ignore this\n      VueHelper.waitForRender(this, \"fromDateTime\", \"clear\").then(\n        (dateTime) => {\n          // @ts-ignore\n          dateTime.clear()\n        }\n      )\n\n      this.tempTo = undefined\n      // @ts-ignore this\n      VueHelper.waitForRender(this, \"beforeDateTime\", \"clear\").then(\n        (dateTime) => {\n          // @ts-ignore\n          dateTime.clear()\n        }\n      )\n    },\n\n    setBeforeDateTimeValue() {\n      this.tempTo = this.to\n      // @ts-ignore this\n      VueHelper.waitForRender(this, \"beforeDateTime\", \"setValue\").then(\n        (dateTime) => {\n          // @ts-ignore\n          dateTime.setValue()\n        }\n      )\n    },\n\n    setFromDateTimeValue() {\n      this.tempFrom = this.from\n      // @ts-ignore this\n      VueHelper.waitForRender(this, \"fromDateTime\", \"setValue\").then(\n        (dateTime) => {\n          // @ts-ignore\n          dateTime.setValue()\n        }\n      )\n    },\n\n    setExactDateTimeValue() {\n      this.tempExact = this.exact\n      // @ts-ignore this\n      VueHelper.waitForRender(this, \"exactDateTime\", \"setValue\").then(\n        (dateTime) => {\n          // @ts-ignore\n          dateTime.setValue()\n        }\n      )\n    },\n\n    initDateSelects() {\n      /* Fill in temp variables */\n      // @ts-ignore this\n      VueHelper.waitForRender(this, \"beforeDateTime\", \"setValue\").then(() =>\n        this.setBeforeDateTimeValue()\n      )\n\n      // @ts-ignore this\n      VueHelper.waitForRender(this, \"fromDateTime\", \"setValue\").then(() =>\n        this.setFromDateTimeValue()\n      )\n\n      // @ts-ignore this\n      VueHelper.waitForRender(this, \"exactDateTime\", \"setValue\").then(() =>\n        this.setExactDateTimeValue()\n      )\n    },\n\n    _(val: any) {\n      return _(val)\n    },\n  },\n})\n</script>\n<template>\n  <div class=\"date-search\">\n    <VDialog\n      v-model=\"dialog\"\n      max-width=\"420\"\n    >\n      <VCard class=\"date-filter\">\n        <VCardTitle class=\"pt-2\">\n          {{ _(\"Date_filter\") }}\n        </VCardTitle>\n\n        <VCardSubtitle class=\"border-b-light py-2\">\n          <i>\n            {{ _(\"Date_filter_subtitle\") }}\n          </i>\n        </VCardSubtitle>\n\n        <VCardText class=\"py-3 px-0\">\n          <div class=\"px-6\">\n            <VSwitch\n              v-model=\"exactDate\"\n              :label=\"_('Specific_date')\"\n              dense\n              hide-details\n              class=\"mt-0 min-content mb-3\"\n            >\n            </VSwitch>\n          </div>\n\n          <div\n            v-if=\"exactDate\"\n            class=\"ml-6\"\n          >\n            <DatetimeSelect\n              :value=\"tempExact\"\n              :is-date-allowed=\"(val) => isDateAllowed(val)\"\n              :show-time=\"false\"\n              :placeholder=\"_('Date')\"\n              @change=\"tempExact = $event\"\n              with-clear\n              ref=\"exactDateTime\"\n            >\n            </DatetimeSelect>\n          </div>\n\n          <div\n            v-else\n            class=\"d-flex px-6\"\n          >\n            <div class=\"mr-6\">\n              <span class=\"field-label-small\">\n                {{ _(\"From\") }}\n              </span>\n\n              <div>\n                <DatetimeSelect\n                  :value=\"tempFrom\"\n                  :is-date-allowed=\"(val) => isDateAllowed(val)\"\n                  :show-time=\"false\"\n                  :placeholder=\"_('FromDate')\"\n                  @change=\"tempFrom = $event\"\n                  with-clear\n                  ref=\"fromDateTime\"\n                >\n                </DatetimeSelect>\n              </div>\n            </div>\n\n            <div>\n              <span class=\"field-label-small\">\n                {{ _(\"To\") }}\n              </span>\n\n              <div>\n                <DatetimeSelect\n                  :value=\"tempTo\"\n                  :is-date-allowed=\"(val) => isDateAllowed(val)\"\n                  :show-time=\"false\"\n                  :placeholder=\"_('ToDate')\"\n                  @change=\"tempTo = $event\"\n                  with-clear\n                  ref=\"beforeDateTime\"\n                >\n                </DatetimeSelect>\n              </div>\n            </div>\n          </div>\n\n          <div\n            class=\"date-search-buttons dialog-bottom-action border-light-t\"\n          >\n            <VSpacer></VSpacer>\n            <VBtn\n              @click=\"dialog = false\"\n              depressed\n              color=\"grey--text\"\n              class=\"mr-3\"\n            >\n              {{ _(\"Cancel\") }}\n            </VBtn>\n            <VBtn\n              :disabled=\"!filterBtnIsValid\"\n              @click=\"doFilter\"\n              depressed\n              color=\"secondary\"\n            >\n              {{ _(\"Apply\") }}\n            </VBtn>\n          </div>\n        </VCardText>\n      </VCard>\n    </VDialog>\n\n    <VCard\n      :ripple=\"false\"\n      @click=\"openDialog\"\n      flat\n      tile\n      class=\"bg-grey-lighter\"\n    >\n      <div class=\"d-flex align-center cursor-pointer\">\n        <FontAwesomeIcon\n          icon=\"fa-regular fa-calendar-days\"\n          class=\"prepend-inner-icon\"\n        >\n        </FontAwesomeIcon>\n\n        <div\n          v-if=\"filterIsActive\"\n          class=\"date-wrapper\"\n        >\n          <div class=\"value-wrapper\">\n            <span v-if=\"from && to\">\n              <span class=\"value\">\n                {{ formatLocalDate(from) }}\n              </span>\n              <span class=\"value\">\n                <span class=\"dash-before\">—</span> {{ formatLocalDate(to) }}\n              </span>\n            </span>\n\n            <span v-else-if=\"from\">\n              <span class=\"value\">\n                {{ formatLocalDate(from) }}\n                <span class=\"dash-after\">—</span>\n              </span>\n            </span>\n\n            <span v-else-if=\"to\">\n              <span class=\"value\">\n                <span class=\"dash-before\">—</span>\n                {{ formatLocalDate(to) }}\n              </span>\n            </span>\n\n            <span v-else-if=\"exact\">\n              <span class=\"value\">\n                {{ formatLocalDate(exact) }}\n              </span>\n            </span>\n          </div>\n\n          <VSpacer></VSpacer>\n\n          <span class=\"button\">\n            <VBtn\n              @click=\"openDialog\"\n              small\n              depressed\n            >\n              <FontAwesomeIcon icon=\"fa-solid fa-pencil\"> </FontAwesomeIcon>\n            </VBtn>\n          </span>\n\n          <span class=\"button\">\n            <VBtn\n              @click.stop=\"clearFilter\"\n              small\n              depressed\n            >\n              <FontAwesomeIcon icon=\"fa-solid fa-xmark\"> </FontAwesomeIcon>\n            </VBtn>\n          </span>\n        </div>\n      </div>\n    </VCard>\n  </div>\n</template>\n<style scoped lang=\"scss\">\n.date-search-buttons {\n  display: flex;\n  margin-top: 24px;\n  padding: 24px 12px 0 0;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DateSearch.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DateSearch.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DateSearch.vue?vue&type=template&id=0857f2e2&scoped=true\"\nimport script from \"./DateSearch.vue?vue&type=script&lang=ts\"\nexport * from \"./DateSearch.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DateSearch.vue?vue&type=style&index=0&id=0857f2e2&prod&scoped=true&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  \"0857f2e2\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardSubtitle } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"date-search\"},[_c(VDialog,{attrs:{\"max-width\":\"420\"},model:{value:(_vm.dialog),callback:function ($$v) {_vm.dialog=$$v},expression:\"dialog\"}},[_c(VCard,{staticClass:\"date-filter\"},[_c(VCardTitle,{staticClass:\"pt-2\"},[_vm._v(\"\\n        \"+_vm._s(_vm._(\"Date_filter\"))+\"\\n      \")]),_vm._v(\" \"),_c(VCardSubtitle,{staticClass:\"border-b-light py-2\"},[_c('i',[_vm._v(\"\\n          \"+_vm._s(_vm._(\"Date_filter_subtitle\"))+\"\\n        \")])]),_vm._v(\" \"),_c(VCardText,{staticClass:\"py-3 px-0\"},[_c('div',{staticClass:\"px-6\"},[_c(VSwitch,{staticClass:\"mt-0 min-content mb-3\",attrs:{\"label\":_vm._('Specific_date'),\"dense\":\"\",\"hide-details\":\"\"},model:{value:(_vm.exactDate),callback:function ($$v) {_vm.exactDate=$$v},expression:\"exactDate\"}})],1),_vm._v(\" \"),(_vm.exactDate)?_c('div',{staticClass:\"ml-6\"},[_c('DatetimeSelect',{ref:\"exactDateTime\",attrs:{\"value\":_vm.tempExact,\"is-date-allowed\":(val) => _vm.isDateAllowed(val),\"show-time\":false,\"placeholder\":_vm._('Date'),\"with-clear\":\"\"},on:{\"change\":function($event){_vm.tempExact = $event}}})],1):_c('div',{staticClass:\"d-flex px-6\"},[_c('div',{staticClass:\"mr-6\"},[_c('span',{staticClass:\"field-label-small\"},[_vm._v(\"\\n              \"+_vm._s(_vm._(\"From\"))+\"\\n            \")]),_vm._v(\" \"),_c('div',[_c('DatetimeSelect',{ref:\"fromDateTime\",attrs:{\"value\":_vm.tempFrom,\"is-date-allowed\":(val) => _vm.isDateAllowed(val),\"show-time\":false,\"placeholder\":_vm._('FromDate'),\"with-clear\":\"\"},on:{\"change\":function($event){_vm.tempFrom = $event}}})],1)]),_vm._v(\" \"),_c('div',[_c('span',{staticClass:\"field-label-small\"},[_vm._v(\"\\n              \"+_vm._s(_vm._(\"To\"))+\"\\n            \")]),_vm._v(\" \"),_c('div',[_c('DatetimeSelect',{ref:\"beforeDateTime\",attrs:{\"value\":_vm.tempTo,\"is-date-allowed\":(val) => _vm.isDateAllowed(val),\"show-time\":false,\"placeholder\":_vm._('ToDate'),\"with-clear\":\"\"},on:{\"change\":function($event){_vm.tempTo = $event}}})],1)])]),_vm._v(\" \"),_c('div',{staticClass:\"date-search-buttons dialog-bottom-action border-light-t\"},[_c(VSpacer),_vm._v(\" \"),_c(VBtn,{staticClass:\"mr-3\",attrs:{\"depressed\":\"\",\"color\":\"grey--text\"},on:{\"click\":function($event){_vm.dialog = false}}},[_vm._v(\"\\n            \"+_vm._s(_vm._(\"Cancel\"))+\"\\n          \")]),_vm._v(\" \"),_c(VBtn,{attrs:{\"disabled\":!_vm.filterBtnIsValid,\"depressed\":\"\",\"color\":\"secondary\"},on:{\"click\":_vm.doFilter}},[_vm._v(\"\\n            \"+_vm._s(_vm._(\"Apply\"))+\"\\n          \")])],1)])],1)],1),_vm._v(\" \"),_c(VCard,{staticClass:\"bg-grey-lighter\",attrs:{\"ripple\":false,\"flat\":\"\",\"tile\":\"\"},on:{\"click\":_vm.openDialog}},[_c('div',{staticClass:\"d-flex align-center cursor-pointer\"},[_c('FontAwesomeIcon',{staticClass:\"prepend-inner-icon\",attrs:{\"icon\":\"fa-regular fa-calendar-days\"}}),_vm._v(\" \"),(_vm.filterIsActive)?_c('div',{staticClass:\"date-wrapper\"},[_c('div',{staticClass:\"value-wrapper\"},[(_vm.from && _vm.to)?_c('span',[_c('span',{staticClass:\"value\"},[_vm._v(\"\\n              \"+_vm._s(_vm.formatLocalDate(_vm.from))+\"\\n            \")]),_vm._v(\" \"),_c('span',{staticClass:\"value\"},[_c('span',{staticClass:\"dash-before\"},[_vm._v(\"—\")]),_vm._v(\" \"+_vm._s(_vm.formatLocalDate(_vm.to))+\"\\n            \")])]):(_vm.from)?_c('span',[_c('span',{staticClass:\"value\"},[_vm._v(\"\\n              \"+_vm._s(_vm.formatLocalDate(_vm.from))+\"\\n              \"),_c('span',{staticClass:\"dash-after\"},[_vm._v(\"—\")])])]):(_vm.to)?_c('span',[_c('span',{staticClass:\"value\"},[_c('span',{staticClass:\"dash-before\"},[_vm._v(\"—\")]),_vm._v(\"\\n              \"+_vm._s(_vm.formatLocalDate(_vm.to))+\"\\n            \")])]):(_vm.exact)?_c('span',[_c('span',{staticClass:\"value\"},[_vm._v(\"\\n              \"+_vm._s(_vm.formatLocalDate(_vm.exact))+\"\\n            \")])]):_vm._e()]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('span',{staticClass:\"button\"},[_c(VBtn,{attrs:{\"small\":\"\",\"depressed\":\"\"},on:{\"click\":_vm.openDialog}},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fa-solid fa-pencil\"}})],1)],1),_vm._v(\" \"),_c('span',{staticClass:\"button\"},[_c(VBtn,{attrs:{\"small\":\"\",\"depressed\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.clearFilter.apply(null, arguments)}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"fa-solid fa-xmark\"}})],1)],1)],1):_vm._e()],1)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport Vue, { PropType, defineComponent } from \"vue\"\nimport $ from \"jquery\"\n\nimport { Resize } from \"vuetify/lib/directives\"\n\nimport Debouncer from \"@/modules/utils/debounce\"\nimport Util from \"@/modules/utils/util\"\nimport Locale from \"@/modules/utils/locales\"\n\nimport { DataTableQuery } from \"@/modules/libs/datatablequery\"\n\nimport {\n  DataTableOptions,\n  Header,\n  FilterClause,\n  FilterableProps,\n  FilterableItem,\n  Query,\n  FilterClauseWithFieldValue,\n  FilterClauseWithSubclauses,\n} from \"@/types\"\n\nimport {\n  DateSearch,\n  RangeSearch,\n} from \"@/components\"\n\ninterface Item {\n  localId: string\n  lastModified: string\n}\n\ninterface State {\n  dataOptions: DataTableOptions<Item> | undefined\n  queryHandler: DataTableQuery | null\n  windowY: number\n  debouncer: any\n  shiftIsPressed: boolean\n  firstDataColumnIsLocked: boolean\n}\n\nexport default defineComponent({\n  name: \"DataTableServerside\",\n\n  directives: {\n    Resize,\n  },\n\n  components: {\n    DateSearch,\n    RangeSearch,\n  },\n\n  props: {\n    totalCount: Number as PropType<number>,\n\n    loading: {\n      type: Boolean as PropType<boolean>,\n      required: true,\n    },\n\n    items: {\n      required: true,\n      type: Array as PropType<Item[]>,\n      default: () => ([]),\n    },\n\n    headers: {\n      required: true,\n      type: Array as PropType<Header[]>,\n      default: () => ([]),\n    },\n\n    filterable: {\n      type: Object as PropType<FilterableProps>,\n      default: () => ({}),\n    },\n\n    hideDefaultFooter: Boolean as PropType<boolean>,\n  },\n\n  data(): State {\n    return {\n      dataOptions: undefined,\n      queryHandler: null,\n\n      windowY: 0,\n      debouncer: new Debouncer(),\n\n      /* For when wanting to select all between two items */\n      shiftIsPressed: false,\n\n      firstDataColumnIsLocked: false,\n    }\n  },\n\n  computed: {\n    cssClasses(): string {\n      const classes = [ \"data-table-serverside\" ]\n\n      if (this.firstDataColumnIsLocked)\n        classes.push(\"first-data-column-locked\")\n      if (this.$vuetify.breakpoint.lgAndDown) classes.push(\"no-table-wrap\")\n\n      return classes.join(\" \")\n    },\n\n    totalCountIsDefined() {\n      return Util.isSet(this.totalCount) &&\n          typeof(this.totalCount) === \"number\" &&\n          this.totalCount < Number.MAX_SAFE_INTEGER\n    },\n\n    computedTotalCount() {\n      if (this.totalCountIsDefined) {\n        return this.totalCount\n      }\n\n      return Number.MAX_SAFE_INTEGER\n    },\n  },\n\n  watch: {\n    dataOptions: {\n      deep: true,\n      handler(val) {\n        if (this.queryHandler && val) {\n          this.queryHandler.setOptions(val)\n          this.$emit(\"update:options\", val)\n          this.queryHandler.updateList()\n        }\n      },\n    },\n  },\n\n  mounted() {\n    this.setOffsetListener()\n    this.initQueryHandler()\n  },\n\n  methods: {\n    updateFilter(filter: FilterClause, add: boolean = true): void {\n      if (this.queryHandler) {\n        if (this.dataOptions !== undefined) {\n          /* Reset page to 1 after changing filter - reset offset */\n          this.dataOptions.page = 1\n\n          this.queryHandler.queryBuilder.removeFilter(filter)\n\n          if (add) this.queryHandler.queryBuilder.addFilter(filter)\n\n          this.queryHandler.updateList()\n        }\n      }\n    },\n\n    updateFilterSelect(filter: FilterableItem | FilterableItem[] | null, header: Header): void {\n      const field = header.filterField || header.value\n      const filterType = header.filterType || \"str\"\n\n      const createFilter = (value: any): FilterClauseWithFieldValue => ({\n        field: field,\n        type: \"eq\",\n        value: {\n          type: filterType,\n          value: value,\n        },\n      })\n\n      if (Array.isArray(filter)) {\n        const filterClauseWithSubs: FilterClauseWithSubclauses = {\n          type: \"and\",\n          subclauses: [],\n        }\n\n        if (filter.length > 0) {\n          filterClauseWithSubs.subclauses = filter.map(f => createFilter(f.value))\n          this.updateFilter(filterClauseWithSubs, true)\n        }\n        else {\n          this.updateFilter(createFilter(null), false)\n        }\n      }\n      else if (filter) {\n        const value = filter.value\n        this.updateFilter(createFilter(value), true)\n      }\n      else {\n        this.updateFilter(createFilter(null), false)\n      }\n    },\n\n    getWindowsHeight() {\n      Vue.nextTick(() => {\n        this.windowY = window.innerHeight - 270\n      })\n    },\n\n    setOffsetListener() {\n      $(\".v-data-table__wrapper\").on(\"scroll\", async () => {\n        this.getWindowsHeight()\n      })\n    },\n\n    getQueryHandler() {\n      return this.queryHandler\n    },\n\n    reload() {\n      if (this.queryHandler) {\n        return this.queryHandler.updateList()\n      }\n    },\n\n    initQueryHandler() {\n      this.dataOptions = {\n        itemsPerPage: 25,\n        page: 1,\n        sortBy: [ \"lastModified\" ],\n        sortDesc: [ true ],\n      }\n\n      const reloadCallback = (query: Query) => {\n        if (query) this.$emit(\"reload\", query)\n      }\n      const newHandler = new DataTableQuery(\n        this.dataOptions,\n        reloadCallback\n      )\n\n      this.queryHandler = this.queryHandler || newHandler\n    },\n\n    getFilterItems(header: Header): FilterableItem[] {\n      if (!this.filterable) return []\n\n      if (header.selections !== undefined) {\n        if (header.selections && header.selections in this.filterable) {\n          return this.filterable[header.selections] || []\n        }\n      }\n\n      return []\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n\n</script>\n<template>\n  <div class=\"data-table\">\n    <VDataTable\n      v-resize=\"getWindowsHeight\"\n      :headers=\"headers\"\n      :items=\"items\"\n      :height=\"windowY\"\n      :footer-props=\"{ 'items-per-page-options': [25, 100, 200] }\"\n      :server-items-length=\"computedTotalCount\"\n      :options.sync=\"dataOptions\"\n      :loading=\"loading\"\n      :hide-default-footer=\"hideDefaultFooter\"\n      :class=\"cssClasses\"\n      fixed-header\n      disable-filtering\n      must-sort\n      calculate-widths\n      item-key=\"localId\"\n    >\n      <template #header>\n        <tr class=\"data-filter-row\">\n          <th\n            v-for=\"(header, index) in headers\"\n            :key=\"index\"\n          >\n            <div class=\"d-flex px-2\">\n              <VAutocomplete\n                v-if=\"header.filterable\"\n                :items=\"getFilterItems(header)\"\n                :multiple=\"header.multiple\"\n                :attach=\"header.attach\"\n                @change=\"updateFilterSelect($event, header)\"\n                return-object\n                hide-details\n                small\n                clearable\n                content-class=\"filter-input\"\n                class=\"filter-input\"\n                prepend-inner-icon=\"fas fa-filter\"\n              >\n              </VAutocomplete>\n              <DateSearch\n                v-else-if=\"\n                  header.searchable && header.headerType === 'datetime'\n                \"\n                :header=\"header\"\n                @change=\"updateFilter($event.filter, $event.add)\"\n              ></DateSearch>\n              <RangeSearch\n                v-else-if=\"header.searchable\"\n                :header=\"header\"\n                @change=\"updateFilter($event.filter, $event.add)\"\n              >\n              </RangeSearch>\n            </div>\n          </th>\n        </tr>\n      </template>\n\n      <template #no-data>\n        <div class=\"data-table-no-data\">\n          <span>\n            <img\n              class=\"image\"\n              src=\"/public/assets/images/icon-no-results.svg\"\n            />\n            <h2>\n              {{ _(\"No_data\") }}\n            </h2>\n          </span>\n        </div>\n      </template>\n\n      <template #loading>\n        <VSkeletonLoader type=\"table-tbody@4\" />\n      </template>\n\n      <template #progress>\n        <VSkeletonLoader type=\"table-tbody@4\" />\n      </template>\n\n      <template #item=\"props\">\n        <slot\n          :props=\"props\"\n          name=\"customrow\"\n        >\n        </slot>\n      </template>\n    </VDataTable>\n  </div>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataTableServerside.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DataTableServerside.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./DataTableServerside.vue?vue&type=template&id=08976d01&scoped=true\"\nimport script from \"./DataTableServerside.vue?vue&type=script&lang=ts\"\nexport * from \"./DataTableServerside.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  \"08976d01\",\n  null\n  \n)\n\nexport default component.exports","import { VAutocomplete } from 'vuetify/lib/components/VAutocomplete';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VSkeletonLoader } from 'vuetify/lib/components/VSkeletonLoader';\nimport Resize from 'vuetify/lib/directives/resize';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"data-table\"},[_c(VDataTable,{directives:[{def: Resize,name:\"resize\",rawName:\"v-resize\",value:(_vm.getWindowsHeight),expression:\"getWindowsHeight\"}],class:_vm.cssClasses,attrs:{\"headers\":_vm.headers,\"items\":_vm.items,\"height\":_vm.windowY,\"footer-props\":{ 'items-per-page-options': [25, 100, 200] },\"server-items-length\":_vm.computedTotalCount,\"options\":_vm.dataOptions,\"loading\":_vm.loading,\"hide-default-footer\":_vm.hideDefaultFooter,\"fixed-header\":\"\",\"disable-filtering\":\"\",\"must-sort\":\"\",\"calculate-widths\":\"\",\"item-key\":\"localId\"},on:{\"update:options\":function($event){_vm.dataOptions=$event}},scopedSlots:_vm._u([{key:\"header\",fn:function(){return [_c('tr',{staticClass:\"data-filter-row\"},_vm._l((_vm.headers),function(header,index){return _c('th',{key:index},[_c('div',{staticClass:\"d-flex px-2\"},[(header.filterable)?_c(VAutocomplete,{staticClass:\"filter-input\",attrs:{\"items\":_vm.getFilterItems(header),\"multiple\":header.multiple,\"attach\":header.attach,\"return-object\":\"\",\"hide-details\":\"\",\"small\":\"\",\"clearable\":\"\",\"content-class\":\"filter-input\",\"prepend-inner-icon\":\"fas fa-filter\"},on:{\"change\":function($event){return _vm.updateFilterSelect($event, header)}}}):(\n                header.searchable && header.headerType === 'datetime'\n              )?_c('DateSearch',{attrs:{\"header\":header},on:{\"change\":function($event){return _vm.updateFilter($event.filter, $event.add)}}}):(header.searchable)?_c('RangeSearch',{attrs:{\"header\":header},on:{\"change\":function($event){return _vm.updateFilter($event.filter, $event.add)}}}):_vm._e()],1)])}),0)]},proxy:true},{key:\"no-data\",fn:function(){return [_c('div',{staticClass:\"data-table-no-data\"},[_c('span',[_c('img',{staticClass:\"image\",attrs:{\"src\":\"/public/assets/images/icon-no-results.svg\"}}),_vm._v(\" \"),_c('h2',[_vm._v(\"\\n            \"+_vm._s(_vm._(\"No_data\"))+\"\\n          \")])])])]},proxy:true},{key:\"loading\",fn:function(){return [_c(VSkeletonLoader,{attrs:{\"type\":\"table-tbody@4\"}})]},proxy:true},{key:\"progress\",fn:function(){return [_c(VSkeletonLoader,{attrs:{\"type\":\"table-tbody@4\"}})]},proxy:true},{key:\"item\",fn:function(props){return [_vm._t(\"customrow\",null,{\"props\":props})]}}],null,true)})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VBtn } from 'vuetify/lib/components/VBtn';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.chartId)?_c('div',{staticClass:\"chart-wrapper\"},[_c('div',{staticClass:\"chart-header\"},[_c('div',{staticClass:\"d-flex line-type-wrapper\"},[_c(VBtn,{class:{ active: _vm.chartType === 'line' },on:{\"click\":function($event){return _vm.updateChartType('line')}}},[_c('i',{staticClass:\"far fa-chart-line\"})]),_vm._v(\" \"),_c(VBtn,{class:{ active: _vm.chartType === 'bar' },on:{\"click\":function($event){return _vm.updateChartType('bar')}}},[_c('i',{staticClass:\"fas fa-chart-column\"})])],1)]),_vm._v(\" \"),_c('div',{staticClass:\"chart-container\"},[_c('canvas',{attrs:{\"id\":_vm.chartId}})])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, PropType } from \"vue\"\n\nimport Chart, { ChartItem } from \"chart.js/auto\"\nimport moment from \"moment\"\n\nimport Util from \"@/modules/utils/util\"\nimport { _ } from \"@/modules/utils/localehelpers\"\nimport Locale from \"@/modules/utils/locales\"\n\ntype ChartType = \"line\" | \"bar\"\n\ninterface State {\n  chartType: ChartType\n}\n\ninterface StatsEntry {\n  timeseries: Record<string, number>\n  count: number\n}\n\ntype Stats = Record<string, StatsEntry>\n\ninterface ChartSeries {\n  key: string\n  label: string\n  count: number\n  data: Record<string, number>\n  borderColor: string\n  backgroundColor: string\n}\n\nexport default defineComponent({\n  name: \"GraphCard\",\n\n  props: {\n    title: String,\n\n    tooltip: String,\n    chartId: String,\n    stats: {\n      type: Object as PropType<Stats>,\n      default: () => ({}),\n    },\n    darkMode: Boolean,\n  },\n\n  data(): State {\n    return {\n      chartType: \"line\",\n    }\n  },\n\n  computed: {\n    chartSeries(): ChartSeries[] {\n      const colorPalette = [\n        {\n          borderColor: \"#9d90ff\",\n          backgroundColor: \"rgba(125, 110, 237, 0.07)\",\n        },\n        {\n          borderColor: \"#36d6c5\",\n          backgroundColor: \"rgba(41, 195, 179, 0.07)\",\n        },\n        {\n          borderColor: \"#ffb020\",\n          backgroundColor: \"rgba(255, 176, 32, 0.07)\",\n        },\n        {\n          borderColor: \"#ff6b6b\",\n          backgroundColor: \"rgba(255, 107, 107, 0.07)\",\n        },\n        {\n          borderColor: \"#4dabf7\",\n          backgroundColor: \"rgba(77, 171, 247, 0.07)\",\n        },\n      ]\n\n      return Object.entries(this.stats || {}).map(([ key, entry ], index) => {\n        const formattedData: Record<string, number> = {}\n\n        Object.entries(entry.timeseries || {}).forEach(([ dateKey, value ]) => {\n          if (value !== undefined) {\n            const label = this.formatDateLabel(dateKey)\n            if (label) {\n              formattedData[label] = value\n            }\n          }\n        })\n\n        const colors =\n          colorPalette[index % colorPalette.length] ??\n          {\n            borderColor: \"#999\",\n            backgroundColor: \"rgba(150,150,150,0.07)\",\n          }\n\n        return {\n          key,\n          label: this.formatSeriesLabel(key),\n          count: entry.count,\n          data: formattedData,\n          borderColor: colors.borderColor,\n          backgroundColor: colors.backgroundColor,\n        }\n      })\n    },\n\n    visibleChartSeries(): ChartSeries[] {\n      return this.chartSeries.filter((series) => series.count >= 0)\n    },\n  },\n\n  watch: {\n    chartType() {\n      this.initChart()\n    },\n    stats: {\n      handler() {\n        this.initChart()\n      },\n      deep: true,\n    },\n    darkMode() {\n      this.initChart()\n    },\n  },\n\n  mounted() {\n    this.initChart()\n  },\n\n  methods: {\n    initChart(): void {\n      if (!this.chartId) return\n\n      const ctx: HTMLElement | null = document.getElementById(this.chartId)\n      if (!ctx) return\n\n      const textColor = this.darkMode ? \"#ffffff\" : \"#676767\"\n\n      const existingChart = Chart.getChart(this.chartId)\n      if (Util.isSet(existingChart)) {\n        existingChart.destroy()\n      }\n\n      const chartEl = ctx as ChartItem\n\n      new Chart(chartEl, {\n        type: this.chartType,\n        data: {\n          datasets: this.chartSeries.map((series) => ({\n            label: series.label,\n            data: series.data,\n            borderWidth: 1.5,\n            borderColor: series.borderColor,\n            backgroundColor: series.backgroundColor,\n            fill: true,\n            pointRadius: 0,\n          })),\n        },\n        options: {\n          responsive: true,\n          interaction: {\n            intersect: false,\n          },\n          plugins: {\n            legend: {\n              display: true,\n              position: \"bottom\",\n              labels: {\n                color: textColor,\n              },\n            },\n          },\n          scales: {\n            x: {\n              display: true,\n              title: {\n                display: true,\n              },\n              grid: {\n                color: \"rgba(0, 0, 0, 0.05)\",\n              },\n              ticks: {\n                font: {\n                  size: 11,\n                },\n                color: textColor,\n              },\n            },\n            y: {\n              display: true,\n              suggestedMin: 0,\n              min: 0,\n              grid: {\n                color: \"rgba(0, 0, 0, 0.05)\",\n              },\n              ticks: {\n                font: {\n                  size: 11,\n                },\n                color: textColor,\n              },\n            },\n          },\n        },\n      })\n    },\n\n    formatDateLabel(dateStr: string): string | undefined {\n      const currentYear = new Date().getFullYear()\n      const date = moment(dateStr, \"YYYY-MM-DD\")\n\n      if (date.isValid()) {\n        return date.year() === currentYear\n          ? date.format(\"D MMM\")\n          : date.format(\"YYYY-MM-DD\")\n      }\n\n      return undefined\n    },\n\n    formatSeriesLabel(key: string): string {\n      return _(key)\n    },\n\n    updateChartType(type: ChartType): void {\n      this.chartType = type\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n</script>\n\n<template>\n  <div\n    v-if=\"chartId\"\n    class=\"chart-wrapper\"\n  >\n    <div class=\"chart-header\">\n      <div class=\"d-flex line-type-wrapper\">\n        <VBtn\n          :class=\"{ active: chartType === 'line' }\"\n          @click=\"updateChartType('line')\"\n        >\n          <i class=\"far fa-chart-line\"></i>\n        </VBtn>\n        <VBtn\n          :class=\"{ active: chartType === 'bar' }\"\n          @click=\"updateChartType('bar')\"\n        >\n          <i class=\"fas fa-chart-column\"></i>\n        </VBtn>\n      </div>\n    </div>\n    <div class=\"chart-container\">\n      <canvas :id=\"chartId\"></canvas>\n    </div>\n  </div>\n</template>\n\n<style scoped lang=\"scss\">\n.chart-stats-card {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  margin-right: 12px;\n}\n\n.direction-indicator {\n  width: 10px;\n  height: 10px;\n  border-radius: 50%;\n  display: none;\n}\n</style>","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GraphCard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./GraphCard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./GraphCard.vue?vue&type=template&id=5b03f2d7&scoped=true\"\nimport script from \"./GraphCard.vue?vue&type=script&lang=ts\"\nexport * from \"./GraphCard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./GraphCard.vue?vue&type=style&index=0&id=5b03f2d7&prod&scoped=true&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  \"5b03f2d7\",\n  null\n  \n)\n\nexport default component.exports","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nexport default defineComponent({\n  name: \"StatsItemCard\",\n\n  props: {\n    title: String,\n\n    image: {\n      type: String,\n      default: () => \"/public/assets/images/logo-connector-fallback-thumbnail.png\",\n    },\n    progress: {\n      type: Number,\n      default: () => 0,\n    },\n    count: {\n      type: Number,\n      default: () => 0,\n    },\n    change: {\n      type: Number,\n      default: () => 0,\n    },\n    changePercentage: {\n      type: Number,\n      default: () => 0,\n    },\n    color: {\n      type: String,\n      default: () => \"#000000\",\n    },\n    active: {\n      type: Boolean,\n      default: () => false,\n    },\n    showCheckbox: {\n      type: Boolean,\n      default: () => false,\n    },\n  },\n\n  data() {\n    return {\n      fallbackSrc: \"/public/assets/images/logo-connector-fallback-thumbnail.png\",\n    }\n  },\n\n  methods: {\n\n    positiveNumber(number: number): number {\n      return Math.abs(number)\n    },\n\n    fallbackImage(event: Event): void {\n      if (event.target) {\n        (event.target as HTMLImageElement).src = this.fallbackSrc\n      }\n    },\n\n    onHover() {\n      this.$emit(\"onhover\")\n    },\n\n    onLeave() {\n      this.$emit(\"onleave\")\n    },\n\n    toggleActive() {\n      this.$emit(\"toggleactive\")\n    },\n  },\n\n})\n</script>\n<template>\n  <VListItem\n    @mouseover=\"onHover\"\n    @mouseleave=\"onLeave\"\n  >\n    <VCheckbox\n      v-if=\"showCheckbox\"\n      :input-value=\"active\"\n      :color=\"color\"\n      @change=\"toggleActive()\"\n      dense\n      hide-details\n      class=\"pa-0 ma-0\"\n    >\n    </VCheckbox>\n\n    <div class=\"list-item-outer\">\n      <div class=\"list-item-inner\">\n        <div\n          v-if=\"image && image !== fallbackSrc\"\n          class=\"logo-wrapper\"\n        >\n          <img\n            :src=\"image\"\n            @error=\"fallbackImage\"\n            :key=\"image\"\n          />\n        </div>\n        <template v-if=\"title\">\n          {{ title }}\n        </template>\n        <VSpacer></VSpacer>\n        <span class=\"count\">\n          {{ count }}\n        </span>\n\n        <div class=\"change-badge-wrapper\">\n          <span\n            :class=\"{ 'positive': change > 0, 'negative': change < 0 }\"\n            class=\"change-badge\"\n          >\n            <span v-if=\"change > 0\">\n              <VIcon>fas fa-plus</VIcon>\n              {{ change }}\n            </span>\n            <span v-else-if=\"change < 0\">\n              <VIcon>fas fa-minus</VIcon>\n              {{ positiveNumber(change) }}\n            </span>\n            <span v-else>\n              <VIcon>fas fa-minus</VIcon>\n            </span>\n          </span>\n        </div>\n      </div>\n    </div>\n  </VListItem>\n</template>\n<style scoped lang=\"scss\">\n\n.list-item-outer {\n  position: relative;\n  width: 100%;\n}\n\n.change-badge-wrapper {\n  min-width: 60px;\n  display: flex;\n  align-self: center;\n  justify-content: flex-end;\n\n  .change-badge {\n    justify-content: center;\n    gap: 1px;\n    font-weight: 600;\n    font-size: 15px;\n    color: #595959;\n    line-height: 1;\n    align-items: center;\n\n    svg {\n      color: #999;\n      font-size: 10px !important;\n    }\n  }\n\n  .change-badge.positive {\n    color: var(--v-positiveAmount-base);\n\n    svg {\n      color: var(--v-positiveAmount-base);\n    }\n  }\n\n  .change-badge.negative {\n    color: var(--v-negativeAmount-base);\n\n    svg {\n      color: var(--v-negativeAmount-base);\n    }\n  }\n}\n\n</style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatsItemCard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatsItemCard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./StatsItemCard.vue?vue&type=template&id=b171bf14&scoped=true\"\nimport script from \"./StatsItemCard.vue?vue&type=script&lang=ts\"\nexport * from \"./StatsItemCard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./StatsItemCard.vue?vue&type=style&index=0&id=b171bf14&prod&scoped=true&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  \"b171bf14\",\n  null\n  \n)\n\nexport default component.exports","import { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VListItem,{on:{\"mouseover\":_vm.onHover,\"mouseleave\":_vm.onLeave}},[(_vm.showCheckbox)?_c(VCheckbox,{staticClass:\"pa-0 ma-0\",attrs:{\"input-value\":_vm.active,\"color\":_vm.color,\"dense\":\"\",\"hide-details\":\"\"},on:{\"change\":function($event){return _vm.toggleActive()}}}):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"list-item-outer\"},[_c('div',{staticClass:\"list-item-inner\"},[(_vm.image && _vm.image !== _vm.fallbackSrc)?_c('div',{staticClass:\"logo-wrapper\"},[_c('img',{key:_vm.image,attrs:{\"src\":_vm.image},on:{\"error\":_vm.fallbackImage}})]):_vm._e(),_vm._v(\" \"),(_vm.title)?[_vm._v(\"\\n        \"+_vm._s(_vm.title)+\"\\n      \")]:_vm._e(),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('span',{staticClass:\"count\"},[_vm._v(\"\\n        \"+_vm._s(_vm.count)+\"\\n      \")]),_vm._v(\" \"),_c('div',{staticClass:\"change-badge-wrapper\"},[_c('span',{staticClass:\"change-badge\",class:{ 'positive': _vm.change > 0, 'negative': _vm.change < 0 }},[(_vm.change > 0)?_c('span',[_c(VIcon,[_vm._v(\"fas fa-plus\")]),_vm._v(\"\\n            \"+_vm._s(_vm.change)+\"\\n          \")],1):(_vm.change < 0)?_c('span',[_c(VIcon,[_vm._v(\"fas fa-minus\")]),_vm._v(\"\\n            \"+_vm._s(_vm.positiveNumber(_vm.change))+\"\\n          \")],1):_c('span',[_c(VIcon,[_vm._v(\"fas fa-minus\")])],1)])])],2)])],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, PropType } from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\nimport Locale from \"@/modules/utils/locales\"\n\nimport {\n  StatsItemCard,\n} from \"@/components\"\n\nimport {\n  StatsGroup,\n} from \"@/types\"\n\n// eslint-disable-next-line\ntype RenderStringFn = (value: string | undefined) => string\n\n// eslint-disable-next-line\ntype RenderBoolFn = (value: string | undefined) => boolean\n\nexport default defineComponent({\n  name: \"StatsBlock\",\n\n  components: {\n    StatsItemCard,\n  },\n\n  props: {\n    values: {\n      type: Array as PropType<StatsGroup[]>,\n      default: () => ([]),\n    },\n\n    active: Boolean,\n\n    getImage: {\n      type: Function as PropType<RenderStringFn>,\n      required: true,\n    },\n\n    getTitle: {\n      type: Function as PropType<RenderStringFn>,\n      required: true,\n    },\n\n    getActive: {\n      type: Function as PropType<RenderBoolFn>,\n      required: true,\n    },\n\n    noDataText: {\n      type: String,\n      required: true,\n    },\n  },\n\n  methods: {\n    isNonEmptyArray(val: any): boolean {\n      return Util.isNonEmptyArray(val)\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n</script>\n\n<template>\n  <div class=\"stats-block\">\n    <div class=\"stats-block-content\">\n      <VList\n        v-if=\"isNonEmptyArray(values)\"\n        class=\"item-list\"\n      >\n        <template v-for=\"item in values\">\n          <StatsItemCard\n            :image=\"getImage(item.value)\"\n            :title=\"getTitle(item.value)\"\n            :count=\"item.end.count || 0\"\n            :change=\"item.change || 0\"\n            :change-percentage=\"item.changePercentage || 0\"\n            :progress=\"item.percentage || 0\"\n            :color=\"item.color || '#000000'\"\n            :active=\"getActive(item.value) || false\"\n            @onhover=\"$emit('hover', item.value)\"\n            @onleave=\"$emit('hover', undefined)\"\n            :key=\"item.value\"\n          ></StatsItemCard>\n        </template>\n      </VList>\n      <div\n        v-else\n        class=\"no-stats-light\"\n      >\n        <p>{{ noDataText }}</p>\n      </div>\n    </div>\n  </div>\n</template>\n\n<style\n    scoped\n    lang=\"scss\"\n>\n\n</style>","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatsBlock.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatsBlock.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./StatsBlock.vue?vue&type=template&id=79727417&scoped=true\"\nimport script from \"./StatsBlock.vue?vue&type=script&lang=ts\"\nexport * from \"./StatsBlock.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  \"79727417\",\n  null\n  \n)\n\nexport default component.exports","import { VList } from 'vuetify/lib/components/VList';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"stats-block\"},[_c('div',{staticClass:\"stats-block-content\"},[(_vm.isNonEmptyArray(_vm.values))?_c(VList,{staticClass:\"item-list\"},[_vm._l((_vm.values),function(item){return [_c('StatsItemCard',{key:item.value,attrs:{\"image\":_vm.getImage(item.value),\"title\":_vm.getTitle(item.value),\"count\":item.end.count || 0,\"change\":item.change || 0,\"change-percentage\":item.changePercentage || 0,\"progress\":item.percentage || 0,\"color\":item.color || '#000000',\"active\":_vm.getActive(item.value) || false},on:{\"onhover\":function($event){return _vm.$emit('hover', item.value)},\"onleave\":function($event){return _vm.$emit('hover', undefined)}}})]})],2):_c('div',{staticClass:\"no-stats-light\"},[_c('p',[_vm._v(_vm._s(_vm.noDataText))])])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { PropType, defineComponent } from \"vue\"\n\nimport Chart, { ChartItem } from \"chart.js/auto\"\nimport moment from \"moment\"\n\nimport Util from \"@/modules/utils/util\"\n\ntype ChartType = \"line\" | \"bar\"\n\ninterface State {\n  chartType: ChartType,\n  chart: Chart<ChartType, any, unknown> | null\n}\n\ninterface Stats {\n  import: Record<string, number>,\n  export: Record<string, number>\n}\n\ninterface ChartElementData {\n  label: string,\n  value: string,\n  data: Record<string, number>,\n  borderWidth: number,\n  fill: boolean,\n  borderColor: string,\n  backgroundColor: string,\n  pointRadius: number,\n}\n\nexport default defineComponent({\n  name: \"StatsGraphCard\",\n\n  props: {\n    title: String,\n\n    tooltip: String,\n    chartId: String,\n    stats: {\n      type: Object as PropType<Stats>,\n      default: () => ({}),\n    },\n    darkMode: Boolean,\n    activeKeys: {\n      type: Array,\n      default: () => ([]),\n    },\n    tooltipForKey: String,\n  },\n\n  data(): State {\n    return {\n      chartType: \"line\",\n      chart: null,\n    }\n  },\n\n  computed: {\n    dataSets(): ChartElementData[] {\n      return Object.entries(this.stats)\n        .filter(([ key ]) => this.activeKeys.includes(key))\n        .map(([ key, value ]) => ({\n          label: value.title,\n          value: key,\n          data: value.timeline,\n          borderWidth: 1.5,\n          fill: false,\n          borderColor: value.color,\n          backgroundColor: this.hexToRgba(value.color, 0.1),\n          pointRadius: 0,\n        }))\n    },\n  },\n\n  watch: {\n    chartType() {\n      this.initChart()\n    },\n    stats() {\n      this.initChart()\n    },\n    darkMode() {\n      this.initChart()\n    },\n    activeKeys() {\n      this.initChart()\n    },\n    tooltipForKey() {\n      this.showTooltipForLastPoint()\n    },\n  },\n\n  mounted() {\n    this.initChart()\n  },\n\n  methods: {\n    hexToRgba(hex: string, opacity: number): string {\n      hex = hex.replace(\"#\", \"\")\n\n      if (hex.length === 3) {\n        hex = hex.split(\"\").map(char => char + char).join(\"\")\n      }\n\n      const r = parseInt(hex.substring(0, 2), 16)\n      const g = parseInt(hex.substring(2, 4), 16)\n      const b = parseInt(hex.substring(4, 6), 16)\n\n      return `rgba(${r}, ${g}, ${b}, ${opacity})`\n    },\n\n    initChart(): void {\n      if (this.chartId) {\n        const ctx: HTMLElement | null = document.getElementById(this.chartId)\n\n        if (ctx) {\n          const textColor = this.darkMode ? \"#ffffff\" : \"#676767\"\n\n          let chartStatus: Chart | undefined = Chart.getChart(this.chartId)\n          if (Util.isSet(chartStatus)) {\n            chartStatus.destroy()\n          }\n\n          const chartEl = (ctx as ChartItem)\n\n          if (this.chartType) {\n            const chartObject: Chart<ChartType, any, unknown> = new Chart(chartEl, {\n              type: this.chartType,\n              data: {\n                datasets: this.dataSets,\n              },\n              options: {\n                responsive: true,\n                interaction: {\n                  intersect: false,\n                },\n                plugins: {\n                  legend: {\n                    display: false,\n                    position: \"top\",\n                  },\n                },\n                scales: {\n                  x: {\n                    display: true,\n                    title: {\n                      display: true,\n                    },\n                    grid: {\n                      color: \"rgba(0, 0, 0, 0.05)\",\n                    },\n                    ticks: {\n                      font: {\n                        size: 11,\n                      },\n                      color: textColor,\n                    },\n                  },\n                  y: {\n                    display: true,\n                    suggestedMin: 0,\n                    suggestedMax: 50,\n                    min: 0,\n                    grid: {\n                      color: \"rgba(0, 0, 0, 0.05)\",\n                    },\n                    ticks: {\n                      font: {\n                        size: 11,\n                      },\n                      color: textColor,\n                    },\n                  },\n                },\n              },\n            })\n\n            this.chart = chartObject\n          }\n        }\n      }\n    },\n\n    formatDateLabel(dateStr: string): string | undefined {\n      const currentYear = new Date().getFullYear()\n      const date = moment(dateStr, \"YYYY-MM-DD\")\n\n      if (date.isValid()) {\n        return date.year() === currentYear ? date.format(\"D MMM\") : date.format(\"YYYY-MM-DD\")\n      }\n\n      return undefined\n    },\n\n    updateChartType(type: ChartType): void {\n      this.chartType = type\n    },\n\n    showTooltipForLastPoint() {\n      if (this.chart) {\n        const datasetIndex = this.dataSets.findIndex(ds => ds.value === this.tooltipForKey)\n\n        const tooltip = this.chart.tooltip\n\n        if (tooltip) {\n          if (tooltip.getActiveElements().length > 0 || datasetIndex === -1) {\n            tooltip.setActiveElements([], { x: 0, y: 0 })\n          } else {\n            const dataElement = this.dataSets[datasetIndex]\n\n            if (datasetIndex > -1 && dataElement) {\n              const dataObj = dataElement.data\n              const dataKeys = Object.keys(dataObj)\n              const lastIndex = dataKeys.length - 1\n\n              const chartArea = this.chart.chartArea\n              tooltip.setActiveElements([\n                {\n                  datasetIndex: datasetIndex,\n                  index: lastIndex,\n                },\n              ],\n              {\n                x: (chartArea.left + chartArea.right) / 2,\n                y: (chartArea.top + chartArea.bottom) / 2,\n              })\n            }\n\n            this.chart.update()\n          }\n        }\n      }\n    },\n  },\n})\n</script>\n<template>\n  <div\n    v-if=\"chartId\"\n    class=\"chart-wrapper\"\n  >\n    <div class=\"chart-container\">\n      <canvas :id=\"chartId\"></canvas>\n    </div>\n  </div>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatsGraphCard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./StatsGraphCard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./StatsGraphCard.vue?vue&type=template&id=e10b85c6&scoped=true\"\nimport script from \"./StatsGraphCard.vue?vue&type=script&lang=ts\"\nexport * from \"./StatsGraphCard.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  \"e10b85c6\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.chartId)?_c('div',{staticClass:\"chart-wrapper\"},[_c('div',{staticClass:\"chart-container\"},[_c('canvas',{attrs:{\"id\":_vm.chartId}})])]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, PropType } from \"vue\"\n\nimport Chart, { ChartItem } from \"chart.js/auto\"\nimport moment from \"moment\"\n\nimport Util from \"@/modules/utils/util\"\nimport { _ } from \"@/modules/utils/localehelpers\"\nimport Locale from \"@/modules/utils/locales\"\n\ntype ChartType = \"line\" | \"bar\"\n\ninterface State {\n  chartType: ChartType\n}\n\ninterface StatsEntry {\n  timeline: Record<string, number>\n  count: number\n}\n\ntype Stats = Record<string, StatsEntry>\n\ninterface ChartSeries {\n  key: string\n  label: string\n  count: number\n  data: Record<string, number>\n  borderColor: string\n  backgroundColor: string\n}\n\nexport default defineComponent({\n  name: \"TenantCard\",\n\n  props: {\n    title: String,\n\n    tenantCount: Number,\n    tooltip: String,\n    chartId: String,\n    stats: {\n      type: Object as PropType<Stats>,\n      default: () => ({}),\n    },\n    darkMode: Boolean,\n  },\n\n  data(): State {\n    return {\n      chartType: \"line\",\n    }\n  },\n\n  computed: {\n    change(): number {\n      const data = this.chartSeries?.[0]?.data\n      if (!data) return 0\n\n      let firstDate: Date | null = null\n      let lastDate: Date | null = null\n      let firstValue = 0\n      let lastValue = 0\n\n      Object.entries(data).forEach(([ dateStr, value ]) => {\n        let date: Date\n\n        if (dateStr.includes(\"-\")) {\n          date = new Date(dateStr)\n        } else {\n          const currentYear = new Date().getFullYear()\n          date = new Date(`${dateStr} ${currentYear}`)\n        }\n\n        if (!firstDate || date < firstDate) {\n          firstDate = date\n          firstValue = value\n        }\n\n        if (!lastDate || date > lastDate) {\n          lastDate = date\n          lastValue = value\n        }\n      })\n\n      return lastValue - firstValue\n    },\n\n    changePercentage(): number {\n      const data = this.chartSeries?.[0]?.data\n      if (!data) return 0\n\n      let firstDate: Date | null = null\n      let lastDate: Date | null = null\n      let firstValue = 0\n      let lastValue = 0\n\n      Object.entries(data).forEach(( [ dateStr, value ] ) => {\n        let date: Date\n        if (dateStr.includes(\"-\")) {\n          date = new Date(dateStr)\n        } else {\n          const currentYear = new Date().getFullYear()\n          date = new Date(`${dateStr} ${currentYear}`)\n        }\n\n        if (!firstDate || date < firstDate) {\n          firstDate = date\n          firstValue = value\n        }\n\n        if (!lastDate || date > lastDate) {\n          lastDate = date\n          lastValue = value\n        }\n      })\n\n      if (firstValue === 0) return 0\n\n      return Math.round(((lastValue - firstValue) / firstValue) * 100)\n    },\n\n    chartSeries(): ChartSeries[] {\n      const combinedData: Record<string, number> = {}\n\n      Object.values(this.stats || {}).forEach((entry) => {\n        Object.entries(entry.timeline || {}).forEach(([ dateKey, value ]) => {\n          if (value !== undefined) {\n            combinedData[dateKey] = (combinedData[dateKey] || 0) + value\n          }\n        })\n      })\n\n      return [\n        {\n          key: \"combined\",\n          label: \"Total\",\n          count: Object.values(this.stats || {}).reduce((acc, e) => acc + (e.count || 0), 0),\n          data: combinedData,\n          borderColor: \"#4dabf7\",\n          backgroundColor: \"rgba(77, 171, 247, 0.07)\",\n        },\n      ]\n    },\n\n    visibleChartSeries(): ChartSeries[] {\n      return this.chartSeries.filter((series) => series.count >= 0)\n    },\n  },\n\n  watch: {\n    chartType() {\n      this.initChart()\n    },\n    stats: {\n      handler() {\n        this.initChart()\n      },\n      deep: true,\n    },\n    darkMode() {\n      this.initChart()\n    },\n  },\n\n  mounted() {\n    this.initChart()\n  },\n\n  methods: {\n    initChart(): void {\n      if (!this.chartId) return\n\n      const ctx: HTMLElement | null = document.getElementById(this.chartId)\n      if (!ctx) return\n\n      const textColor = this.darkMode ? \"#ffffff\" : \"#676767\"\n\n      const existingChart = Chart.getChart(this.chartId)\n      if (Util.isSet(existingChart)) {\n        existingChart.destroy()\n      }\n\n      const chartEl = ctx as ChartItem\n\n      new Chart(chartEl, {\n        type: this.chartType,\n        data: {\n          datasets: this.chartSeries.map((series) => ({\n            label: series.label,\n            data: series.data,\n            borderWidth: 1.5,\n            borderColor: series.borderColor,\n            backgroundColor: series.backgroundColor,\n            fill: true,\n            pointRadius: 0,\n          })),\n        },\n        options: {\n          responsive: true,\n          interaction: {\n            intersect: false,\n          },\n          plugins: {\n            legend: {\n              display: false,\n              position: \"bottom\",\n              labels: {\n                color: textColor,\n              },\n            },\n          },\n          scales: {\n            x: {\n              display: false,\n              title: {\n                display: true,\n              },\n              grid: {\n                color: \"rgba(0, 0, 0, 0.05)\",\n              },\n              ticks: {\n                font: {\n                  size: 11,\n                },\n                color: textColor,\n              },\n            },\n            y: {\n              display: false,\n              suggestedMin: 0,\n              min: 0,\n              grid: {\n                color: \"rgba(0, 0, 0, 0.05)\",\n              },\n              ticks: {\n                font: {\n                  size: 11,\n                },\n                color: textColor,\n              },\n            },\n          },\n        },\n      })\n    },\n\n    formatDateLabel(dateStr: string): string | undefined {\n      const currentYear = new Date().getFullYear()\n      const date = moment(dateStr, \"YYYY-MM-DD\")\n\n      if (date.isValid()) {\n        return date.year() === currentYear\n          ? date.format(\"D MMM\")\n          : date.format(\"YYYY-MM-DD\")\n      }\n\n      return undefined\n    },\n\n    formatSeriesLabel(key: string): string {\n      return _(key)\n    },\n\n    updateChartType(type: ChartType): void {\n      this.chartType = type\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n</script>\n\n<template>\n  <div class=\"tenant-card-wrapper\">\n    <div class=\"text-wrapper\">\n      <span class=\"label\">\n        {{ _(\"Active_tenants\") }}\n      </span>\n      <span class=\"amount\">\n        <span class=\"amount-wrapper\">\n          {{ tenantCount }}\n        </span>\n        <VSpacer></VSpacer>\n        <span class=\"direction-badge\">\n          <span\n            v-if=\"change !== 0\"\n            :class=\"{\n              positive: true,\n              negative: false\n            }\"\n            class=\"change-amount\"\n          >\n            <span\n              v-if=\"change > 0\"\n              class=\"change-symbol\"\n            >\n              +{{ change }}\n            </span>\n            <span\n              v-else\n              class=\"change-symbol\"\n            >\n              {{ change }}\n            </span>\n            <span\n              v-if=\"changePercentage > 0\"\n              class=\"change-percentage\"\n            >\n              (\n              <template v-if=\"1 > 0\">\n                <VIcon>far fa-arrow-trend-up</VIcon>\n              </template>\n              <template v-else>\n                <VIcon>far fa-arrow-trend-down</VIcon>\n              </template>\n              <span>\n                {{ changePercentage }}%\n              </span>\n              )\n            </span>\n          </span>\n        </span>\n      </span>\n    </div>\n    <VSpacer></VSpacer>\n    <div\n      v-if=\"chartId\"\n      class=\"chart-wrapper\"\n    >\n      <div class=\"chart-container\">\n        <canvas :id=\"chartId\"></canvas>\n      </div>\n    </div>\n  </div>\n</template>\n\n<style scoped lang=\"scss\">\n\n.chart-container {\n  transform: scale(0.9);\n}\n\n.tenant-card-wrapper {\n  display: flex;\n  background: var(--v-background-base);\n  border: 1px solid var(--v-border-base);\n  border-radius: 16px;\n  padding: 1em 1.5em 1em 2em;\n  gap: 3em;\n\n  .text-wrapper {\n    display: flex;\n    flex-direction: column;\n    gap: 1em;\n    padding-top: 1em;\n\n    .label {\n      font-size: 16px;\n      font-weight: 400;\n      letter-spacing: 0.2px;\n      display: flex;\n      opacity: 0.9;\n    }\n\n    .count-badge {\n      font-size: 32px;\n      font-weight: 600;\n      display: flex;\n      align-items: end;\n      line-height: 1;\n      gap: 8px;\n    }\n\n    .amount {\n      font-size: 2.4em;\n      font-weight: 600;\n      display: flex;\n      align-items: end;\n      line-height: 1;\n      gap: 8px;\n\n      .amount-wrapper {\n        display: flex;\n        gap: 2px;\n        align-items: center;\n\n        .change-symbol {\n          font-size: 22px;\n        }\n      }\n\n      .change-percentage {\n        display: flex;\n        font-size: 15px;\n        padding-bottom: 2px;\n        align-items: flex-end;\n\n        svg {\n          margin-right: 3px;\n          font-size: 14px !important;\n        }\n      }\n\n      .direction-badge {\n        font-size: 12px;\n        font-weight: 400;\n        margin-bottom: 3px;\n        display: flex;\n        flex-direction: column;\n        gap: 4px;\n\n        .direction-text {\n          opacity: 0.7;\n        }\n\n        .change-amount {\n          font-size: 25px;\n          font-weight: 500;\n          display: flex;\n          gap: 6px;\n          align-items: end;\n        }\n\n        .change-amount.positive {\n          color: var(--v-positiveAmount-base);\n\n          svg {\n            color: var(--v-positiveAmount-base);\n          }\n        }\n\n        .change-amount.negative {\n          color: var(--v-negativeAmount-base);\n\n          svg {\n            color: var(--v-negativeAmount-base);\n          }\n        }\n      }\n    }\n  }\n}\n\n.chart-stats-card {\n  display: inline-flex;\n  align-items: center;\n  gap: 8px;\n  margin-right: 12px;\n}\n\n.direction-indicator {\n  width: 10px;\n  height: 10px;\n  border-radius: 50%;\n  display: none;\n}\n</style>","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TenantCard.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TenantCard.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TenantCard.vue?vue&type=template&id=76ccc058&scoped=true\"\nimport script from \"./TenantCard.vue?vue&type=script&lang=ts\"\nexport * from \"./TenantCard.vue?vue&type=script&lang=ts\"\nimport style0 from \"./TenantCard.vue?vue&type=style&index=0&id=76ccc058&prod&scoped=true&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  \"76ccc058\",\n  null\n  \n)\n\nexport default component.exports","import { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"tenant-card-wrapper\"},[_c('div',{staticClass:\"text-wrapper\"},[_c('span',{staticClass:\"label\"},[_vm._v(\"\\n      \"+_vm._s(_vm._(\"Active_tenants\"))+\"\\n    \")]),_vm._v(\" \"),_c('span',{staticClass:\"amount\"},[_c('span',{staticClass:\"amount-wrapper\"},[_vm._v(\"\\n        \"+_vm._s(_vm.tenantCount)+\"\\n      \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('span',{staticClass:\"direction-badge\"},[(_vm.change !== 0)?_c('span',{staticClass:\"change-amount\",class:{\n            positive: true,\n            negative: false\n          }},[(_vm.change > 0)?_c('span',{staticClass:\"change-symbol\"},[_vm._v(\"\\n            +\"+_vm._s(_vm.change)+\"\\n          \")]):_c('span',{staticClass:\"change-symbol\"},[_vm._v(\"\\n            \"+_vm._s(_vm.change)+\"\\n          \")]),_vm._v(\" \"),(_vm.changePercentage > 0)?_c('span',{staticClass:\"change-percentage\"},[_vm._v(\"\\n            (\\n            \"),(1 > 0)?[_c(VIcon,[_vm._v(\"far fa-arrow-trend-up\")])]:[_c(VIcon,[_vm._v(\"far fa-arrow-trend-down\")])],_vm._v(\" \"),_c('span',[_vm._v(\"\\n              \"+_vm._s(_vm.changePercentage)+\"%\\n            \")]),_vm._v(\"\\n            )\\n          \")],2):_vm._e()]):_vm._e()])],1)]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),(_vm.chartId)?_c('div',{staticClass:\"chart-wrapper\"},[_c('div',{staticClass:\"chart-container\"},[_c('canvas',{attrs:{\"id\":_vm.chartId}})])]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport { _ } from \"@/modules/utils/localehelpers\"\n\nimport {\n  PbSelect,\n} from \"@/components\"\n\ntype StatsSortOption = {\n  text: string,\n  byline: string,\n  value: string,\n  icon: string\n}\n\ninterface State {\n  statsSortOptions: StatsSortOption[]\n}\n\nexport default defineComponent({\n  name: \"SortSelect\",\n\n  components: {\n    PbSelect,\n  },\n\n  props: {\n    value: String,\n  },\n\n  data: (): State => ({\n    statsSortOptions: [\n      {\n        text: _(\"Count\"),\n        byline: _(\"Descending\"),\n        value: \"count_desc\",\n        icon: \"far fa-arrow-down-wide-short\",\n      },\n      {\n        text: _(\"Count\"),\n        byline: _(\"Ascending\"),\n        value: \"count_asc\",\n        icon: \"far fa-arrow-down-short-wide\",\n      },\n      {\n        text: _(\"Change\"),\n        byline: _(\"Descending\"),\n        value: \"change_desc\",\n        icon: \"far fa-arrow-down-wide-short\",\n      },\n\n      {\n        text: _(\"Change\"),\n        byline: _(\"Ascending\"),\n        value: \"change_asc\",\n        icon: \"far fa-arrow-down-short-wide\",\n      },\n    ],\n  }),\n})\n</script>\n\n<template>\n  <PbSelect\n    :value=\"value\"\n    :items=\"statsSortOptions\"\n    :append-icon=\"null\"\n    @change=\"$emit('change', $event)\"\n    outlined\n    hide-details\n    dense\n    class=\"select-sort\"\n    custom-content-class=\"select-sort\"\n  >\n    <template #customselection=\"{ props: { item } }\">\n      <div class=\"sort-row\">\n        <FontAwesomeIcon\n          :icon=\"item.icon\"\n          color=\"grey\"\n        >\n        </FontAwesomeIcon>\n        <div class=\"title-label\">\n          {{ item.text }}\n        </div>\n      </div>\n    </template>\n\n    <template #customitem=\"{ props: { item } }\">\n      <div class=\"sort-row sort-row-list\">\n        <VIcon>{{ item.icon }}</VIcon>\n        <div class=\"text-wrapper\">\n          <div class=\"title-label\">\n            {{ item.text }}\n          </div>\n          <div class=\"byline-label\">\n            {{ item.byline }}\n          </div>\n        </div>\n      </div>\n    </template>\n  </PbSelect>\n</template>\n\n<style\n    scoped\n    lang=\"scss\"\n>\n\n</style>","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SortSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SortSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SortSelect.vue?vue&type=template&id=3265bc46&scoped=true\"\nimport script from \"./SortSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./SortSelect.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  \"3265bc46\",\n  null\n  \n)\n\nexport default component.exports","import { VIcon } from 'vuetify/lib/components/VIcon';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('PbSelect',{staticClass:\"select-sort\",attrs:{\"value\":_vm.value,\"items\":_vm.statsSortOptions,\"append-icon\":null,\"outlined\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"custom-content-class\":\"select-sort\"},on:{\"change\":function($event){return _vm.$emit('change', $event)}},scopedSlots:_vm._u([{key:\"customselection\",fn:function({ props: { item } }){return [_c('div',{staticClass:\"sort-row\"},[_c('FontAwesomeIcon',{attrs:{\"icon\":item.icon,\"color\":\"grey\"}}),_vm._v(\" \"),_c('div',{staticClass:\"title-label\"},[_vm._v(\"\\n        \"+_vm._s(item.text)+\"\\n      \")])],1)]}},{key:\"customitem\",fn:function({ props: { item } }){return [_c('div',{staticClass:\"sort-row sort-row-list\"},[_c(VIcon,[_vm._v(_vm._s(item.icon))]),_vm._v(\" \"),_c('div',{staticClass:\"text-wrapper\"},[_c('div',{staticClass:\"title-label\"},[_vm._v(\"\\n          \"+_vm._s(item.text)+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"byline-label\"},[_vm._v(\"\\n          \"+_vm._s(item.byline)+\"\\n        \")])])],1)]}}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport {\n  DefaultValidators,\n  Validation,\n  DefaultValidatorsType,\n} from \"@/modules/utils/validators\"\nimport SortOptions from \"@/modules/utils/sort-options\"\nimport Locale from \"@/modules/utils/locales\"\nimport { _ } from \"@/modules/utils/localehelpers\"\n\nimport ResellerUserManager from \"@/modules/managers/reseller-user\"\n\nimport ResellerUser from \"@/modules/injected-js-handlers/reseller-user\"\n\nimport {\n  Reseller as ResellerType,\n  ResellerUser as ResellerUserType,\n  RuleCallback,\n  EditType,\n} from \"@/types\"\n\nimport {\n  CheckboxList,\n  CoreSelect,\n} from \"@/components\"\n\ninterface State {\n  loading: boolean,\n  editReselleruserDlg: boolean,\n  reselleruserData: ResellerUserType,\n  command: \"create\" | \"edit\"\n  resellerPerms: string[],\n  DefaultValidators: DefaultValidatorsType,\n  perms: Record<string, string[]>,\n  pwd: string | null,\n  pwd2: string | null,\n  reseller: ResellerType,\n}\n\nexport default defineComponent({\n  components: {\n    CheckboxList,\n    CoreSelect,\n  },\n\n  data(): State {\n    return {\n      loading: true,\n      editReselleruserDlg: false,\n      reselleruserData: {},\n      command: \"create\",\n      /* Put superuser in the top */\n      resellerPerms: window.__reseller_perms\n        .sort((a, b) => {\n          if (a === \"superuser\") return -1\n          if (b === \"superuser\") return 1\n          return 0\n        })\n        .filter((perm) => ResellerUser.hasPermission(perm)),\n      DefaultValidators: DefaultValidators,\n      perms: {},\n      pwd: null,\n      pwd2: null,\n\n      reseller: window?.__reseller,\n    }\n  },\n\n  computed: {\n\n    /* Make enum available in template */\n    EditTypeEnum() {\n      return EditType\n    },\n\n    languages() {\n      return Locale.allLanguages()\n        .map(lang => ({\n          text: lang.name,\n          value: lang.code3,\n        }))\n    },\n\n    pwdRules(): RuleCallback[] {\n      return [ DefaultValidators.requiredOnCreate(this.command === \"create\") ]\n    },\n\n    pwd2Rules(): RuleCallback[] {\n      return [\n        DefaultValidators.requiredOnCreate(this.command === \"create\"),\n        DefaultValidators.passWordMatch(this.pwd, this.pwd2),\n      ]\n    },\n\n    saveIsEnabled(): boolean {\n      const checks: boolean[] = [\n        DefaultValidators.passWordMatch(this.pwd, this.pwd2)(this.pwd) === true,\n        DefaultValidators.passWordMatch(this.pwd, this.pwd2)(this.pwd2) === true,\n\n        DefaultValidators.requiredOnCreate(this.command === \"create\")(this.pwd) === true,\n        DefaultValidators.requiredOnCreate(this.command === \"create\")(this.pwd2) === true,\n      ]\n\n      return checks.every(c => c)\n    },\n\n    isMyself(): boolean {\n      return ResellerUser.login() === this.reselleruserData.login\n    },\n  },\n\n  methods: {\n    createUser() {\n      let options = new SortOptions(this.resellerPerms)\n      this.perms = options.sortOptions()\n      this.command = \"create\"\n      this.reselleruserData = {\n        permissions: [],\n      }\n      this.editReselleruserDlg = true\n    },\n\n    editUser(login: string) {\n      let options = new SortOptions(this.resellerPerms)\n      this.perms = options.sortOptions()\n      this.command = \"edit\"\n      this.reselleruserData = {}\n      let r = {\n        login: login,\n      }\n      ResellerUserManager\n        .getUser(r)\n        .then((data: ResellerUserType) => {\n          this.reselleruserData = data\n          this.editReselleruserDlg = true\n          this.loading = false\n        })\n        .catch((err: Error) => {\n          // @ts-ignore\n          this.openErrorDialog(err)\n        })\n    },\n\n    async saveUser() {\n      const el = this.$refs.form\n\n      if (el) {\n        const element = (el as HTMLFormElement)\n\n        let valid = new Validation(element)\n        if (valid.hasErrors()) {\n        // @ts-ignore\n          this.openErrorDialog(valid.getErrors())\n          return\n        }\n\n        // @ts-ignore\n        const result = await this.openConfirmDialog({\n          title: \"Save these settings?\",\n          description:\n            \"Are you really sure you want to save these user settings?\",\n        })\n\n        if (result) {\n          const payload = {\n            ...this.reselleruserData,\n            cmd: this.command,\n            pwd2: \"\",\n          }\n\n          if (!!this.pwd && !!this.pwd2) {\n            payload.pwd = this.pwd\n            payload.pwd2 = this.pwd2\n          }\n          ResellerUserManager\n            .saveUser(payload)\n            .then(data => {\n              if (data.success) {\n                this.$emit(\"reselleruser-saved\")\n                // @ts-ignore\n                this.openSuccessDialog(_(\"SaveUserSuccess\"))\n                this.close()\n              } else {\n              // @ts-ignore\n                this.openErrorDialog(data.msg)\n              }\n            })\n            .catch((err: Error) => {\n            // @ts-ignore\n              this.openErrorDialog(err)\n            })\n        }\n      }\n    },\n\n    close() {\n      this.loading = false\n      this.editReselleruserDlg = false\n      this.reselleruserData = {}\n      this.command = \"create\"\n      this.perms = {}\n      this.pwd = null\n      this.pwd2 = null\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n  },\n})\n</script>\n<template>\n  <div>\n    <!-- reselleruser edit dlg -->\n    <VDialog\n      v-model=\"editReselleruserDlg\"\n      @keydown.esc=\"editReselleruserDlg = false\"\n      scrollable\n      max-width=\"600px\"\n    >\n      <template #activator=\"{ on }\">\n        <slot v-on=\"on\"></slot>\n      </template>\n      <VCard\n        data-test-id=\"reseller-user-dialog\"\n        class=\"edit-reseller\"\n      >\n        <VLayout>\n          <VFlex\n            lg12\n            class=\"pr-2\"\n          >\n            <VLayout class=\"align-vertical\">\n              <VFlex lg6>\n                <VCardTitle class=\"headline\">\n                  {{ _(\"User\") }}\n                </VCardTitle>\n              </VFlex>\n              <VFlex\n                lg6\n                class=\"align-right\"\n              >\n                <VBtn\n                  @click=\"close()\"\n                  depressed\n                  color=\"grey--text\"\n                  data-test-id=\"cancel\"\n                >\n                  {{ _(\"Cancel\") }}\n                </VBtn>\n                <VBtn\n                  :disabled=\"!saveIsEnabled\"\n                  @click=\"saveUser()\"\n                  depressed\n                  color=\"primary\"\n                  class=\"bg-primary\"\n                  data-test-id=\"save\"\n                >\n                  {{ _(\"Save\") }}\n                </VBtn>\n              </VFlex>\n            </VLayout>\n          </VFlex>\n        </VLayout>\n\n        <VLayout\n          justify-center\n          class=\"dialog-content\"\n        >\n          <VCardText>\n            <VForm\n              @submit.prevent=\"saveUser()\"\n              ref=\"form\"\n            >\n              <VRow class=\"mt-2 mb-0 py-0\">\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <VTextField\n                    v-model=\"reselleruserData.login\"\n                    :label=\"_('Username')\"\n                    :readonly=\"command != 'create'\"\n                    :rules=\"[\n                      DefaultValidators.minLength(3),\n                      DefaultValidators.correctLoginFormat(),\n                    ]\"\n                    outlined\n                    data-test-id=\"username\"\n                  >\n                  </VTextField>\n                </VCol>\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <VTextField\n                    v-model=\"reselleruserData.fullName\"\n                    :label=\"_('Name')\"\n                    outlined\n                    data-test-id=\"name\"\n                  >\n                  </VTextField>\n                </VCol>\n              </VRow>\n\n              <VRow class=\"mt-2 mb-0 py-0\">\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <VTextField\n                    v-model=\"reselleruserData.email\"\n                    :label=\"_('Email')\"\n                    :rules=\"[DefaultValidators.isEmail]\"\n                    outlined\n                    data-test-id=\"email\"\n                  >\n                  </VTextField>\n                </VCol>\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <CoreSelect\n                    :value=\"reselleruserData.language\"\n                    :label=\"_('Language')\"\n                    :items=\"languages\"\n                    :rules=\"[DefaultValidators.required]\"\n                    @change=\"reselleruserData.language = $event\"\n                    data-test-id=\"language-select\"\n                  >\n                  </CoreSelect>\n                </VCol>\n              </VRow>\n\n              <VRow class=\"mt-2 mb-0 py-0\">\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <VTextField\n                    :value=\"pwd\"\n                    :label=\"_('Password')\"\n                    :rules=\"pwdRules\"\n                    @input=\"pwd = $event\"\n                    outlined\n                    type=\"password\"\n                    data-test-id=\"password\"\n                  >\n                  </VTextField>\n                </VCol>\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <VTextField\n                    :value=\"pwd2\"\n                    :label=\"_('Password_confirmation')\"\n                    :rules=\"pwd2Rules\"\n                    @input=\"pwd2 = $event\"\n                    outlined\n                    type=\"password\"\n                    data-test-id=\"confirm-password\"\n                  >\n                  </VTextField>\n                </VCol>\n              </VRow>\n\n              <div class=\"mb-4\">\n                <CheckboxList\n                  :disabled=\"isMyself\"\n                  :available-options=\"resellerPerms\"\n                  :selected-options=\"reselleruserData.permissions || []\"\n                  :grouped-options=\"perms\"\n                  :edit-type=\"EditTypeEnum.User\"\n                  @change=\"reselleruserData.permissions = $event.list\"\n                  type=\"permission\"\n                >\n                </CheckboxList>\n              </div>\n\n              <div\n                class=\"reselleruser-localid\"\n              >\n                {{ reselleruserData.localId }}\n              </div>\n            </VForm>\n          </VCardText>\n        </VLayout>\n      </VCard>\n    </VDialog>\n  </div>\n</template>\n<style lang=\"scss\">\n.edit-reseller {\n  background-color: var(--v-dialogBg-base) !important;\n}\n\n.reselleruser-localid {\n  width: 100%;\n  color: #ccc;\n  text-align: center;\n  font-weight: 400;\n  font-size: 10px;\n}\n</style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReselleruserEditDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ReselleruserEditDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./ReselleruserEditDialog.vue?vue&type=template&id=031de314\"\nimport script from \"./ReselleruserEditDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./ReselleruserEditDialog.vue?vue&type=script&lang=ts\"\nimport style0 from \"./ReselleruserEditDialog.vue?vue&type=style&index=0&id=031de314&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 { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(VDialog,{attrs:{\"scrollable\":\"\",\"max-width\":\"600px\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;_vm.editReselleruserDlg = false}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_vm._t(\"default\")]}}],null,true),model:{value:(_vm.editReselleruserDlg),callback:function ($$v) {_vm.editReselleruserDlg=$$v},expression:\"editReselleruserDlg\"}},[_vm._v(\" \"),_c(VCard,{staticClass:\"edit-reseller\",attrs:{\"data-test-id\":\"reseller-user-dialog\"}},[_c(VLayout,[_c(VFlex,{staticClass:\"pr-2\",attrs:{\"lg12\":\"\"}},[_c(VLayout,{staticClass:\"align-vertical\"},[_c(VFlex,{attrs:{\"lg6\":\"\"}},[_c(VCardTitle,{staticClass:\"headline\"},[_vm._v(\"\\n                \"+_vm._s(_vm._(\"User\"))+\"\\n              \")])],1),_vm._v(\" \"),_c(VFlex,{staticClass:\"align-right\",attrs:{\"lg6\":\"\"}},[_c(VBtn,{attrs:{\"depressed\":\"\",\"color\":\"grey--text\",\"data-test-id\":\"cancel\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"\\n                \"+_vm._s(_vm._(\"Cancel\"))+\"\\n              \")]),_vm._v(\" \"),_c(VBtn,{staticClass:\"bg-primary\",attrs:{\"disabled\":!_vm.saveIsEnabled,\"depressed\":\"\",\"color\":\"primary\",\"data-test-id\":\"save\"},on:{\"click\":function($event){return _vm.saveUser()}}},[_vm._v(\"\\n                \"+_vm._s(_vm._(\"Save\"))+\"\\n              \")])],1)],1)],1)],1),_vm._v(\" \"),_c(VLayout,{staticClass:\"dialog-content\",attrs:{\"justify-center\":\"\"}},[_c(VCardText,[_c(VForm,{ref:\"form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.saveUser()}}},[_c(VRow,{staticClass:\"mt-2 mb-0 py-0\"},[_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c(VTextField,{attrs:{\"label\":_vm._('Username'),\"readonly\":_vm.command != 'create',\"rules\":[\n                    _vm.DefaultValidators.minLength(3),\n                    _vm.DefaultValidators.correctLoginFormat(),\n                  ],\"outlined\":\"\",\"data-test-id\":\"username\"},model:{value:(_vm.reselleruserData.login),callback:function ($$v) {_vm.$set(_vm.reselleruserData, \"login\", $$v)},expression:\"reselleruserData.login\"}})],1),_vm._v(\" \"),_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c(VTextField,{attrs:{\"label\":_vm._('Name'),\"outlined\":\"\",\"data-test-id\":\"name\"},model:{value:(_vm.reselleruserData.fullName),callback:function ($$v) {_vm.$set(_vm.reselleruserData, \"fullName\", $$v)},expression:\"reselleruserData.fullName\"}})],1)],1),_vm._v(\" \"),_c(VRow,{staticClass:\"mt-2 mb-0 py-0\"},[_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c(VTextField,{attrs:{\"label\":_vm._('Email'),\"rules\":[_vm.DefaultValidators.isEmail],\"outlined\":\"\",\"data-test-id\":\"email\"},model:{value:(_vm.reselleruserData.email),callback:function ($$v) {_vm.$set(_vm.reselleruserData, \"email\", $$v)},expression:\"reselleruserData.email\"}})],1),_vm._v(\" \"),_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c('CoreSelect',{attrs:{\"value\":_vm.reselleruserData.language,\"label\":_vm._('Language'),\"items\":_vm.languages,\"rules\":[_vm.DefaultValidators.required],\"data-test-id\":\"language-select\"},on:{\"change\":function($event){_vm.reselleruserData.language = $event}}})],1)],1),_vm._v(\" \"),_c(VRow,{staticClass:\"mt-2 mb-0 py-0\"},[_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c(VTextField,{attrs:{\"value\":_vm.pwd,\"label\":_vm._('Password'),\"rules\":_vm.pwdRules,\"outlined\":\"\",\"type\":\"password\",\"data-test-id\":\"password\"},on:{\"input\":function($event){_vm.pwd = $event}}})],1),_vm._v(\" \"),_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c(VTextField,{attrs:{\"value\":_vm.pwd2,\"label\":_vm._('Password_confirmation'),\"rules\":_vm.pwd2Rules,\"outlined\":\"\",\"type\":\"password\",\"data-test-id\":\"confirm-password\"},on:{\"input\":function($event){_vm.pwd2 = $event}}})],1)],1),_vm._v(\" \"),_c('div',{staticClass:\"mb-4\"},[_c('CheckboxList',{attrs:{\"disabled\":_vm.isMyself,\"available-options\":_vm.resellerPerms,\"selected-options\":_vm.reselleruserData.permissions || [],\"grouped-options\":_vm.perms,\"edit-type\":_vm.EditTypeEnum.User,\"type\":\"permission\"},on:{\"change\":function($event){_vm.reselleruserData.permissions = $event.list}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"reselleruser-localid\"},[_vm._v(\"\\n              \"+_vm._s(_vm.reselleruserData.localId)+\"\\n            \")])],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VCol } from 'vuetify/lib/components/VGrid';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.showSalesFlow)?_c(VRow,{staticClass:\"settings-wrapper pb-4 ma-0\"},[_c('div',{staticClass:\"settings-wrapper-header\"},[_vm._v(\"\\n    \"+_vm._s(_vm._(\"Sales_flow\"))+\"\\n  \")]),_vm._v(\" \"),_c(VCol,{staticClass:\"pa-0\",attrs:{\"cols\":12}},[_c('div',{staticClass:\"pa-0\"},[_c('div',{staticClass:\"assistant-details-wrapper\"},[_c(VRow,{staticClass:\"pa-2 pb-0 ma-0\"},[_c(VCol,{attrs:{\"cols\":6}},[_c('div',{staticClass:\"select-source\"},[(_vm.tempAssistant)?[_vm._l((_vm.leftFilteredGroups),function(group,gIndex){return [_c('div',{key:gIndex,staticClass:\"select-source-card-item\"},[(_vm.showSourceType(group))?_c(VSelect,{staticClass:\"pb-select record-select\",attrs:{\"value\":_vm.sourceType,\"items\":_vm.allowedSourceTypeOptions,\"placeholder\":_vm._('Choose_source_type'),\"outlined\":\"\",\"dense\":\"\"},on:{\"change\":function($event){return _vm.selectedSourceType($event)}}}):_c('div',{staticClass:\"type-field\"},[_vm._v(\"\\n                      \"+_vm._s(_vm._(group.ruleTag))+\"\\n                    \")]),_vm._v(\" \"),(_vm.tempAssistant)?_c('div',{staticClass:\"select-source-card-system\"},[_c('span',{staticClass:\"separator\"},[_vm._v(\"\\n                        \"+_vm._s(_vm._(\"From\"))+\"\\n                      \")]),_vm._v(\" \"),_c('div',{staticClass:\"select-source-card-system\"},[_c('AssistantSystemSelectWrapper',{attrs:{\"group\":group,\"options\":_vm.options,\"disable-select\":_vm.disableSelect(group),\"tenant-country\":_vm.tenantCountry,\"show-disabled\":\"\"},on:{\"click\":function($event){return _vm.$emit('change-group-selection', { group, value: $event.value })},\"update-options\":function($event){return _vm.$emit('update-options', $event)}}})],1)]):_vm._e()],1)]})]:_c('div',{staticClass:\"select-source-card-item\"},[_c(VSelect,{staticClass:\"pb-select record-select\",attrs:{\"value\":_vm.sourceType,\"items\":_vm.allowedSourceTypeOptions,\"placeholder\":_vm._('Choose_source_type'),\"outlined\":\"\",\"dense\":\"\"},on:{\"change\":function($event){return _vm.selectedSourceType($event)}}})],1)],2)]),_vm._v(\" \"),_c(VCol,{attrs:{\"cols\":6}},[_c('div',{staticClass:\"select-source\"},[_c('div',{staticClass:\"select-source-card-item export-item\"},[_c(VSelect,{staticClass:\"pb-select record-select\",attrs:{\"disabled\":_vm.sourceType === undefined,\"items\":_vm.visibleDestinationTypeOptions,\"value\":_vm.destinationType,\"placeholder\":_vm._('Choose_destination_type'),\"outlined\":\"\",\"dense\":\"\"},on:{\"change\":function($event){return _vm.selectedDestinationType($event)}}}),_vm._v(\" \"),(_vm.tempAssistant)?_c('div',{staticClass:\"select-source-card-items\"},[_vm._l((_vm.rightFilteredGroups),function(group,gIndex){return [_c('div',{key:gIndex,staticClass:\"select-source-card-system\"},[_c('span',{staticClass:\"separator\"},[_vm._v(\"\\n                        \"+_vm._s(_vm._(\"To\"))+\"\\n                      \")]),_vm._v(\" \"),_c('AssistantSystemSelectWrapper',{attrs:{\"group\":group,\"options\":_vm.options,\"disable-select\":!_vm.leftSideActive,\"tenant-country\":_vm.tenantCountry},on:{\"click\":function($event){return _vm.$emit('change-group-selection', { group, value: $event.value })},\"update-options\":function($event){return _vm.$emit('update-options', $event)}}})],1)]})],2):_vm._e()],1)])])],1)],1)])]),_vm._v(\" \"),(_vm.graphIsVisible)?_c(VCol,{staticClass:\"px-6\",attrs:{\"cols\":12}},[_c('AppGraph',{attrs:{\"source-systems\":_vm.sourceSystems,\"destination-systems\":_vm.destinationSystems,\"plugs\":_vm.plugs,\"tenant-country\":_vm.tenantCountry}})],1):_vm._e()],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent, PropType } from \"vue\"\n\nimport Locale from \"@/modules/utils/locales\"\nimport AssistantUtils from \"@/modules/tenant-edit-dialog/assistant-utils\"\nimport Util from \"@/modules/utils/util\"\nimport {\n  SalesFlowUtils,\n  SourceType,\n  DestinationType,\n  SpecialPlugDefinitionObj,\n  AssistantPlugDefinitionObj,\n  SalesFlowTenant,\n  Group,\n} from \"@/modules/tenant-edit-dialog/sales-flow-utils\"\n\nimport Reseller from \"@/modules/injected-js-handlers/reseller\"\n\nimport {\n  AssistantDefinition,\n  TenantOptionRuleGroup,\n  Assistant,\n  ConnectorObject,\n} from \"@/types\"\n\nimport {\n  AppGraph,\n  AssistantSystemSelectWrapper,\n} from \"@/components\"\n\ninterface State {\n  tempAssistant: Assistant | undefined,\n  sourceType: string | undefined,\n  destinationType: string | undefined,\n\n  sourceTypeOptions: SourceType[],\n  destinationTypeOptions: DestinationType[],\n\n  assistantPlugDefinition: Record<string, Record<string, AssistantPlugDefinitionObj[]>>,\n  connectors: Record<string, ConnectorObject>,\n}\n\nexport default defineComponent({\n  components: {\n    AppGraph,\n    AssistantSystemSelectWrapper,\n  },\n\n  props: {\n    assistantDefinitions: {\n      type: Array as PropType<AssistantDefinition[]>,\n      default: () => ([]),\n    },\n\n    options: {\n      type: Array as PropType<string[]>,\n      default: () => ([]),\n    },\n    currentAssistants: {\n      type: Array as PropType<Assistant[]>,\n      default: () => ([]),\n    },\n    isDefaultMode: Boolean,\n    tenantCountry: String,\n  },\n\n  data: (): State => ({\n    tempAssistant: undefined,\n    sourceType: undefined,\n    destinationType: undefined,\n\n    assistantPlugDefinition: SalesFlowUtils.assistantPlugDefinition(),\n    sourceTypeOptions: SalesFlowUtils.sourceTypeOptions(),\n    destinationTypeOptions: SalesFlowUtils.destinationTypeOptions(),\n\n    // @ts-ignore\n    connectors: ConnectorOptions.allConnectorsMap,\n  }),\n\n  computed: {\n    assistantDefinition(): AssistantDefinition | undefined {\n      return this.assistantDefinitions\n        .find((ass: AssistantDefinition) => ass.code === this.tempAssistant?.code)\n    },\n\n    showSalesFlow(): boolean {\n      const checks = [\n        this.isDefaultMode,\n        Util.isNonEmptyArray(this.allowedSourceTypeOptions),\n        Util.isNonEmptyArray(this.destinationTypeOptions),\n      ]\n\n      return checks.every(c => c)\n    },\n\n    graphIsVisible(): boolean {\n      const checks = [\n        Util.isSet(this.sourceType),\n        Util.isSet(this.destinationType),\n        Util.isNonEmptyArray(this.sourceSystems),\n        Util.isNonEmptyArray(this.destinationSystems),\n      ]\n\n      return checks.every(c => c)\n    },\n\n    allowedSourceTypeOptions(): SourceType[] {\n      return SalesFlowUtils\n        .allowedSourceTypeOptions(this.assistantDefinitions)\n    },\n\n    plugs(): SpecialPlugDefinitionObj[] {\n      if (!this.tempAssistant?.code) return []\n      const plugDefinition: Record<string, AssistantPlugDefinitionObj[]> | undefined =\n        this.assistantPlugDefinition?.[this.tempAssistant?.code]\n\n      if (!plugDefinition) return []\n\n      if (plugDefinition) {\n        return this.importPlugs(plugDefinition)\n          .concat(this.exportPlugs(plugDefinition))\n      }\n\n      return []\n    },\n\n    systems(): ConnectorObject[] {\n      if (!this.options) return []\n\n      const connectorValues: ConnectorObject[] = Object.values(this.connectors)\n      const connectorsByOpt: Record<string, ConnectorObject> = connectorValues.reduce(\n        (a: Record<string, ConnectorObject>, b: ConnectorObject) => {\n          a[b.opt] = b\n          return a\n        }, ({} as Record<string, ConnectorObject>))\n\n      const object: Array<ConnectorObject | undefined> = (this.options || [])\n        .filter((opt: string) => {\n          if (opt === \"api.partner.shiplink\") return true\n          else return opt.includes(\".connection\")\n        })\n        .filter((opt: string) => Reseller.hasAllowableTenantOption(opt))\n        .map((opt: string) => connectorsByOpt[opt])\n\n      return (object.filter((obj: ConnectorObject | undefined) => obj) as ConnectorObject[])\n    },\n\n    sourceSystems() {\n      const getSourceGroups = () => {\n        if (this.tempAssistant?.code === \"order-auto-ledger-entry-settlement\")\n          return [ Group.ecommerce, Group.payment, Group.marketplace ]\n        else if (this.tempAssistant?.code === \"zreport-settlement\")\n          return [ Group.payment ]\n        else if (this.tempAssistant?.code === \"order-transfer\")\n          return [ Group.ecommerce, Group.erp ]\n        else if (\n          this.tempAssistant?.code === \"ledger-entry-transfer-settlement\"\n        )\n          return [ Group.misc, Group.pos, Group.payment ]\n        return []\n      }\n\n      const sourceGroups = getSourceGroups()\n\n      return this.systems.filter((obj: ConnectorObject) =>\n        sourceGroups.some(g => g === (obj.group as Group))\n      )\n    },\n\n    destinationSystems() {\n      const getDestinationGroups = () => {\n        if (this.tempAssistant?.code === \"order-auto-ledger-entry-settlement\")\n          return [ Group.erp ]\n        else if (this.tempAssistant?.code === \"zreport-settlement\")\n          return [ Group.erp ]\n        else if (this.tempAssistant?.code === \"order-transfer\")\n          return [ Group.misc, Group.logistics ]\n        else if (\n          this.tempAssistant?.code === \"ledger-entry-transfer-settlement\"\n        )\n          return [ Group.erp ]\n        return []\n      }\n\n      const destinationGroups = getDestinationGroups()\n\n      return this.systems.filter((obj: ConnectorObject) =>\n        destinationGroups.some(g => g === (obj.group as Group))\n      )\n    },\n\n    leftFilteredGroups(): TenantOptionRuleGroup[] {\n      if (!this.assistantDefinition) return []\n\n      return this.getGroups(this.assistantDefinition)\n        .filter((group: TenantOptionRuleGroup) => this.leftSideColumn(group.ruleTag))\n    },\n\n    leftSideActive(): boolean {\n      return this.leftFilteredGroups\n        .some(group => group.systems.some(s => {\n          const opts = group.children[s]\n\n          if (opts) return opts.every(opt => this.options.includes(opt))\n          return false\n        }))\n    },\n\n    rightFilteredGroups() {\n      if (!this.assistantDefinition) return []\n\n      return this.getGroups(this.assistantDefinition)\n        .filter((group: TenantOptionRuleGroup) => this.rightSideColumn(group.ruleTag))\n    },\n\n    rightSideActive(): boolean {\n      return this.rightFilteredGroups\n        .some(group => group.systems.some(s => {\n          const opts = group.children[s]\n\n          if (opts) opts.every(opt => this.options.includes(opt))\n          return false\n        }))\n    },\n\n    visibleDestinationTypeOptions() {\n      return SalesFlowUtils.visibleDestinationTypeOptions(\n        this.sourceType,\n        this.destinationType,\n        this.assistantDefinitions\n      )\n    },\n  },\n\n  mounted() {\n    this.sourceType = undefined\n    this.destinationType = undefined\n    const assCode = this.currentAssistants?.[0]?.code\n    const assistantDef = this.assistantDefinitions\n      .find((ad: AssistantDefinition) => ad.code === assCode)\n\n    if (Util.isSet(assCode)) {\n      this.selectAssistant(assCode)\n      this.$set(this, \"tempAssistant\", assistantDef)\n    }\n\n    if (!this.tempAssistant && this.allowedSourceTypeOptions.length === 1) {\n      this.selectedSourceType(this.allowedSourceTypeOptions[0]!.value)\n    }\n  },\n\n  methods: {\n    getRootOptions(assistantDefinition: AssistantDefinition): string[] {\n      return SalesFlowUtils.getRootOptions(assistantDefinition)\n    },\n\n    importPlugs(plugDefinition: Record<string, AssistantPlugDefinitionObj[]>): SpecialPlugDefinitionObj[] {\n      const plugObjects: AssistantPlugDefinitionObj[] =\n        Object.values(plugDefinition)\n          .flat()\n          .filter(p => p.import)\n\n      const systems = this.sourceSystems.concat(this.destinationSystems)\n\n      return SalesFlowUtils.getPlugs(systems, this.options, plugObjects)\n    },\n\n    exportPlugs(plugDefinition: Record<string, AssistantPlugDefinitionObj[]>): SpecialPlugDefinitionObj[] {\n      const plugObjects: AssistantPlugDefinitionObj[] =\n        Object.values(plugDefinition)\n          .flat()\n          .filter(p => p.export)\n\n      const systems = this.sourceSystems.concat(this.destinationSystems)\n\n      return SalesFlowUtils.getPlugs(systems, this.options, plugObjects)\n    },\n\n    showSourceType(group: TenantOptionRuleGroup) {\n      if (!this.assistantDefinitions) return false\n      const filtered = this.getGroups((this.assistantDefinition as AssistantDefinition))\n        .filter((group: TenantOptionRuleGroup) => this.leftSideColumn(group.ruleTag))\n\n      return group.ruleTag !== \"pay\" || filtered.length === 1\n    },\n\n    selectedDestinationType(type: string) {\n      this.destinationType = type\n      this.tempAssistant = undefined\n\n      this.applyType()\n    },\n\n    leftSideColumn(ruleTag: string): boolean {\n      return (ruleTag === \"source\" || ruleTag === \"ecommerce\" || this.isExtraColumn(ruleTag))\n    },\n\n    isExtraColumn(ruleTag: string): boolean {\n      return ruleTag === \"pay\"\n    },\n\n    rightSideColumn(ruleTag: string): boolean {\n      return ruleTag === \"destination\" || ruleTag === \"erp\"\n    },\n\n    _(val: string): string {\n      return Locale.translate(val)\n    },\n\n    getGroups(assistantDefinition: AssistantDefinition): TenantOptionRuleGroup[] {\n      const availableOptions = Reseller.allowableTenantOptions()\n\n      if (!assistantDefinition) return []\n\n      return AssistantUtils.getGroups(assistantDefinition, availableOptions, Reseller.allowableTenantOptions())\n    },\n\n    selectAssistant(code: string) {\n      switch (code) {\n        case \"order-transfer\":\n          this.sourceType = \"orders\"\n          this.destinationType = \"orders\"\n          break\n        case \"order-auto-ledger-entry-settlement\":\n          this.sourceType = \"orders\"\n          this.destinationType = \"ledgerentries\"\n          break\n        case \"zreport-settlement\":\n          this.sourceType = \"zreports\"\n          this.destinationType = \"ledgerentries\"\n          break\n        case \"ledger-entry-transfer-settlement\":\n          this.sourceType = \"ledgerentries\"\n          this.destinationType = \"ledgerentries\"\n          break\n      }\n\n      this.$set(this, \"tempAssistant\", this.assistantDefinitions.find((a) => a.code === code))\n    },\n\n    selectedSourceType(type: string) {\n      this.sourceType = type\n      this.destinationType = undefined\n      this.tempAssistant = undefined\n\n      if (this.sourceType === \"orders\") {\n        if (this.visibleDestinationTypeOptions.some(v => v.value === \"ledgerentries\")) {\n          this.destinationType = \"ledgerentries\"\n        }\n        else {\n          const firstDestType = this.visibleDestinationTypeOptions[0]\n\n          if (firstDestType) {\n            this.destinationType = firstDestType.value\n          }\n        }\n      }\n      else if (this.sourceType === \"ledgerentries\" || this.sourceType === \"zreports\") {\n        this.destinationType = \"ledgerentries\"\n      }\n\n      this.applyType()\n    },\n\n    applyType() {\n      if (this.sourceType === \"orders\") {\n        if (this.destinationType === \"orders\") {\n          this.applyAssistant(\"order-transfer\")\n        } else if (this.destinationType === \"ledgerentries\") {\n          this.applyAssistant(\"order-auto-ledger-entry-settlement\")\n        }\n      } else {\n        if (this.sourceType === \"zreports\") {\n          if (this.destinationType === \"ledgerentries\") {\n            this.applyAssistant(\"zreport-settlement\")\n          }\n        } else if (this.sourceType === \"ledgerentries\") {\n          if (this.destinationType === \"ledgerentries\") {\n            this.applyAssistant(\"ledger-entry-transfer-settlement\")\n          }\n        }\n      }\n    },\n\n    applyAssistant(code: string) {\n      const assistantObj: Assistant = {\n        parameters: {},\n      }\n\n      const assistantDef = this.assistantDefinitions\n        .find(def => def.code === code)\n\n      if (assistantDef) {\n        assistantObj.code = assistantDef.code\n        assistantObj.name = assistantDef.name\n\n        this.tempAssistant = assistantObj\n\n        const newTenantData: SalesFlowTenant = {\n          assistants: [ this.tempAssistant ],\n          newOptions: SalesFlowUtils.getRootOptions(assistantDef),\n        }\n\n        this.$emit(\"update-tenant-data\", newTenantData)\n      }\n    },\n\n    disableSelect(group: TenantOptionRuleGroup): boolean {\n      return this.isExtraColumn(group.ruleTag) &&\n          this.tempAssistant &&\n          this.tempAssistant.code === \"order-auto-ledger-entry-settlement\" &&\n          !this.leftSideActive || false\n    },\n  },\n})\n</script>\n<template>\n  <VRow\n    v-if=\"showSalesFlow\"\n    class=\"settings-wrapper pb-4 ma-0\"\n  >\n    <div class=\"settings-wrapper-header\">\n      {{ _(\"Sales_flow\") }}\n    </div>\n\n    <VCol\n      :cols=\"12\"\n      class=\"pa-0\"\n    >\n      <div class=\"pa-0\">\n        <div class=\"assistant-details-wrapper\">\n          <VRow class=\"pa-2 pb-0 ma-0\">\n            <VCol :cols=\"6\">\n              <div class=\"select-source\">\n                <template v-if=\"tempAssistant\">\n                  <template v-for=\"(group, gIndex) in leftFilteredGroups\">\n                    <div\n                      class=\"select-source-card-item\"\n                      :key=\"gIndex\"\n                    >\n                      <VSelect\n                        v-if=\"showSourceType(group)\"\n                        :value=\"sourceType\"\n                        :items=\"allowedSourceTypeOptions\"\n                        :placeholder=\"_('Choose_source_type')\"\n                        @change=\"selectedSourceType($event)\"\n                        outlined\n                        dense\n                        class=\"pb-select record-select\"\n                      >\n                      </VSelect>\n\n                      <div\n                        v-else\n                        class=\"type-field\"\n                      >\n                        {{ _(group.ruleTag) }}\n                      </div>\n\n                      <div\n                        v-if=\"tempAssistant\"\n                        class=\"select-source-card-system\"\n                      >\n                        <span class=\"separator\">\n                          {{ _(\"From\") }}\n                        </span>\n\n                        <div class=\"select-source-card-system\">\n                          <AssistantSystemSelectWrapper\n                            :group=\"group\"\n                            :options=\"options\"\n                            :disable-select=\"disableSelect(group)\"\n                            :tenant-country=\"tenantCountry\"\n                            @click=\"$emit('change-group-selection', { group, value: $event.value })\"\n                            @update-options=\"$emit('update-options', $event)\"\n                            show-disabled\n                          >\n                          </AssistantSystemSelectWrapper>\n                        </div>\n                      </div>\n                    </div>\n                  </template>\n                </template>\n\n                <div\n                  v-else\n                  class=\"select-source-card-item\"\n                >\n                  <VSelect\n                    :value=\"sourceType\"\n                    :items=\"allowedSourceTypeOptions\"\n                    :placeholder=\"_('Choose_source_type')\"\n                    @change=\"selectedSourceType($event)\"\n                    outlined\n                    dense\n                    class=\"pb-select record-select\"\n                  >\n                  </VSelect>\n                </div>\n              </div>\n            </VCol>\n\n            <VCol :cols=\"6\">\n              <div class=\"select-source\">\n                <div class=\"select-source-card-item export-item\">\n                  <VSelect\n                    :disabled=\"sourceType === undefined\"\n                    :items=\"visibleDestinationTypeOptions\"\n                    :value=\"destinationType\"\n                    :placeholder=\"_('Choose_destination_type')\"\n                    @change=\"selectedDestinationType($event)\"\n                    outlined\n                    dense\n                    class=\"pb-select record-select\"\n                  >\n                  </VSelect>\n                  <div\n                    v-if=\"tempAssistant\"\n                    class=\"select-source-card-items\"\n                  >\n                    <template v-for=\"(group, gIndex) in rightFilteredGroups\">\n                      <div\n                        class=\"select-source-card-system\"\n                        :key=\"gIndex\"\n                      >\n                        <span class=\"separator\">\n                          {{ _(\"To\") }}\n                        </span>\n\n                        <AssistantSystemSelectWrapper\n                          :group=\"group\"\n                          :options=\"options\"\n                          :disable-select=\"!leftSideActive\"\n                          :tenant-country=\"tenantCountry\"\n                          @click=\"$emit('change-group-selection', { group, value: $event.value })\"\n                          @update-options=\"$emit('update-options', $event)\"\n                        >\n                        </AssistantSystemSelectWrapper>\n                      </div>\n                    </template>\n                  </div>\n                </div>\n              </div>\n            </VCol>\n          </VRow>\n        </div>\n      </div>\n    </VCol>\n\n    <VCol\n      v-if=\"graphIsVisible\"\n      :cols=\"12\"\n      class=\"px-6\"\n    >\n      <AppGraph\n        :source-systems=\"sourceSystems\"\n        :destination-systems=\"destinationSystems\"\n        :plugs=\"plugs\"\n        :tenant-country=\"tenantCountry\"\n      >\n      </AppGraph>\n    </VCol>\n  </VRow>\n</template>\n<style lang=\"scss\">\n.assistant-details-wrapper {\n  .v-input:not(.disabled) {\n    .v-input__slot {\n      background-color: var(--v-background-base) !important;\n    }\n  }\n}\n</style>","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SalesFlow.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SalesFlow.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./SalesFlow.vue?vue&type=template&id=0d0a8062\"\nimport script from \"./SalesFlow.vue?vue&type=script&lang=ts\"\nexport * from \"./SalesFlow.vue?vue&type=script&lang=ts\"\nimport style0 from \"./SalesFlow.vue?vue&type=style&index=0&id=0d0a8062&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","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport {\n  controlMixin,\n} from \"@/mixins\"\n\nimport { DefaultValidators, DefaultValidatorsType } from \"@/modules/utils/validators\"\nimport Locale from \"@/modules/utils/locales\"\n\nimport {\n  ConfirmDialog,\n} from \"@/components\"\n\ninterface ConfirmOptions {\n  title: string,\n  description: string,\n  confirmText?: string\n}\n\ninterface State {\n  DefaultValidators: DefaultValidatorsType,\n  save: boolean\n  saveName: string | undefined\n  saveNameValid: boolean\n}\n\nexport type ConfirmResult = {\n  saveAsTemplateName: string | undefined,\n  result: boolean,\n}\n\nexport default defineComponent({\n  components: {\n    ConfirmDialog,\n  },\n\n  mixins: [\n    controlMixin,\n  ],\n\n  props: {\n    showSaveAs: Boolean,\n  },\n\n  data: (): State => ({\n    DefaultValidators: DefaultValidators,\n    save: false,\n    saveName: undefined,\n    saveNameValid: false,\n  }),\n\n  computed: {\n    templateNameIsValid() {\n      if (typeof (this.saveName) === \"string\") return this.saveName.length > 2\n      return false\n    },\n\n    saveEnabled() {\n      return this.save ? this.templateNameIsValid : true\n    },\n  },\n\n  methods: {\n    async open(options: ConfirmOptions): Promise<ConfirmResult> {\n      if (this.$refs.superDialog) {\n        // @ts-ignore\n        const result = await this.$refs.superDialog.open(options.title,\n          options.description,\n          options.confirmText)\n\n        const saveName = this.saveName\n\n        this.resetValues()\n\n        return {\n          result: result,\n          saveAsTemplateName: saveName,\n        }\n      }\n      else {\n        this.resetValues()\n\n        return Promise.resolve({\n          result: false,\n          saveAsTemplateName: undefined,\n        })\n      }\n    },\n\n    resetValues() {\n      this.save = false\n      this.saveName = undefined\n    },\n\n    _(val: string): string {\n      return Locale.translate(val)\n    },\n  },\n\n})\n</script>\n\n<template>\n  <ConfirmDialog\n    :save-enabled=\"saveEnabled\"\n    ref=\"superDialog\"\n  >\n    <template #content>\n      <div\n        v-if=\"hasPerm('tenanttemplate.create') && showSaveAs\"\n        :class=\"{ 'is-active': save }\"\n        class=\"save-as-template-banner\"\n      >\n        <div class=\"d-flex align-center gap-2\">\n          <span class=\"title-text\">\n            {{ _(\"Save_as_template\") }}\n          </span>\n          <VSpacer></VSpacer>\n\n          <VCheckbox\n            v-model=\"save\"\n            hide-details\n            dense\n            class=\"ma-0 pa-0\"\n          >\n          </VCheckbox>\n        </div>\n        <div class=\"byline-text\">\n          {{ _(\"Save_as_template_byline\") }}\n        </div>\n        <div\n          v-if=\"save\"\n          class=\"mt-2\"\n        >\n          <VForm\n            v-model=\"saveNameValid\"\n            ref=\"form\"\n          >\n            <VTextField\n              v-model=\"saveName\"\n              :placeholder=\"_('Template_name')\"\n              persistent-placeholder\n              outlined\n              dense\n              class=\"pb-text-field\"\n            >\n            </VTextField>\n            <span\n              v-if=\"!templateNameIsValid\"\n              class=\"text-hint\"\n            >\n              {{ _('Template_name_hint') }}\n            </span>\n          </VForm>\n        </div>\n      </div>\n    </template>\n  </ConfirmDialog>\n</template>\n\n<style\n  scoped\n  lang=\"scss\"\n>\n\n  .save-as-template-banner {\n    padding: 12px 16px;\n    border: 1px solid var(--v-border-base);\n    display: flex;\n    flex-direction: column;\n    margin: 0 20px 12px;\n    border-radius: 16px !important;\n    background-color: var(--v-backgroundTableHeader-base);\n\n    .text-hint {\n      font-size: 12px;\n      color: var(--v-error-base) !important;\n      padding-left: 3px;\n    }\n\n    .v-input--selection-controls__input {\n      margin: 0 !important;\n\n      svg {\n        height: 18px !important;\n        width: 18px !important;\n      }\n    }\n\n    .title-text {\n      font-weight: 500;\n      font-size: 16px;\n\n      svg {\n        font-size: 15px;\n        margin-right: 3px;\n      }\n    }\n\n    .byline-text {\n      font-weight: 400;\n      font-size: 13px;\n      color: var(--v-byline-base);\n    }\n  }\n\n  .save-as-template-banner.is-active {\n    background-color: var(--v-backgroud-base);\n  }\n\n  .active {\n    background-color: var(--v-border-base) !important;\n    color: white !important;\n  }\n</style>","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TenantCreateConfirmDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TenantCreateConfirmDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TenantCreateConfirmDialog.vue?vue&type=template&id=1b1a6919&scoped=true\"\nimport script from \"./TenantCreateConfirmDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./TenantCreateConfirmDialog.vue?vue&type=script&lang=ts\"\nimport style0 from \"./TenantCreateConfirmDialog.vue?vue&type=style&index=0&id=1b1a6919&prod&scoped=true&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  \"1b1a6919\",\n  null\n  \n)\n\nexport default component.exports","import { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('ConfirmDialog',{ref:\"superDialog\",attrs:{\"save-enabled\":_vm.saveEnabled},scopedSlots:_vm._u([{key:\"content\",fn:function(){return [(_vm.hasPerm('tenanttemplate.create') && _vm.showSaveAs)?_c('div',{staticClass:\"save-as-template-banner\",class:{ 'is-active': _vm.save }},[_c('div',{staticClass:\"d-flex align-center gap-2\"},[_c('span',{staticClass:\"title-text\"},[_vm._v(\"\\n          \"+_vm._s(_vm._(\"Save_as_template\"))+\"\\n        \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c(VCheckbox,{staticClass:\"ma-0 pa-0\",attrs:{\"hide-details\":\"\",\"dense\":\"\"},model:{value:(_vm.save),callback:function ($$v) {_vm.save=$$v},expression:\"save\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"byline-text\"},[_vm._v(\"\\n        \"+_vm._s(_vm._(\"Save_as_template_byline\"))+\"\\n      \")]),_vm._v(\" \"),(_vm.save)?_c('div',{staticClass:\"mt-2\"},[_c(VForm,{ref:\"form\",model:{value:(_vm.saveNameValid),callback:function ($$v) {_vm.saveNameValid=$$v},expression:\"saveNameValid\"}},[_c(VTextField,{staticClass:\"pb-text-field\",attrs:{\"placeholder\":_vm._('Template_name'),\"persistent-placeholder\":\"\",\"outlined\":\"\",\"dense\":\"\"},model:{value:(_vm.saveName),callback:function ($$v) {_vm.saveName=$$v},expression:\"saveName\"}}),_vm._v(\" \"),(!_vm.templateNameIsValid)?_c('span',{staticClass:\"text-hint\"},[_vm._v(\"\\n            \"+_vm._s(_vm._('Template_name_hint'))+\"\\n          \")]):_vm._e()],1)],1):_vm._e()]):_vm._e()]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('BaseDialog',{ref:\"baseDialog\",attrs:{\"header\":_vm.headerText,\"disable-save\":!_vm.allFieldsAreFilledInCorrectly,\"automatic-load-at-save\":false,\"show-data-view\":_vm.isDefaultMode || _vm.isDetailedMode,\"persistent\":\"\",\"data-test-id\":\"edit-tenant-dialog\",\"content-class\":\"dialog-wrapper\",\"max-width\":\"1100\"},on:{\"save\":function($event){_vm.isTemplate ? _vm.saveTenantTemplate() : _vm.saveTenant()},\"close\":function($event){return _vm.close()},\"open-data-view\":function($event){return _vm.openDataView(_vm.isAdmin ? _vm.tenantData : _vm.tenantData?.customData || {})}},scopedSlots:_vm._u([{key:\"extrabuttons\",fn:function(){return [_c(VSpacer),_vm._v(\" \"),(_vm.onlyTenant && _vm.hasUiTenantDetailedPerm)?_c('div',{staticClass:\"btn-switch-wrapper\"},[_c(VBtn,{class:{ active: _vm.isDefaultMode },attrs:{\"depressed\":\"\",\"data-test-id\":\"switch-to-simple-mode-btn\"},on:{\"click\":_vm.setDefault}},[_c('FontAwesomeIcon',{staticClass:\"rotate-180\",attrs:{\"icon\":\"far fa-share-nodes\"}})],1),_vm._v(\" \"),_c(VBtn,{class:{ active: _vm.isDetailedMode },attrs:{\"depressed\":\"\",\"data-test-id\":\"switch-to-detailed-mode-btn\"},on:{\"click\":_vm.setDetailed}},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-list-check\"}})],1)],1):_vm._e()]},proxy:true}])},[_vm._v(\" \"),(_vm.tenantData)?_c(VCard,{staticClass:\"edit-tenant\",attrs:{\"data-test-id\":\"edit-tenant-dialog\"}},[_c('div',{staticClass:\"dialog-content pa-4\"},[_c(VForm,{ref:\"form\"},[(_vm.isWelcomeMode)?_c('div',{staticClass:\"edit-selection\"},[(_vm.hasTenantTemplateViewPerm)?[_c('h2',[_vm._v(\"\\n                \"+_vm._s(_vm._(\"Create_from_template\"))+\"\\n              \")]),_vm._v(\" \"),_c('div',{staticClass:\"d-flex flex-wrap gap-3\"},[(_vm.isNonEmptyArray(_vm.templates))?[_vm._l((_vm.templates),function(template,tIndex){return [_c('div',{key:tIndex,staticClass:\"template-card\",on:{\"click\":function($event){return _vm.applyTemplate(template.localId)}}},[_c('div',{staticClass:\"d-flex flex-wrap gap-1\"},[(\n                            _vm.systemsFromOptions(template.options).length > 3\n                          )?_c('div',{staticClass:\"system-logo-count\"},[_vm._v(\"\\n                          +\"+_vm._s(_vm.systemsFromOptions(template.options).length - 3)+\"\\n                        \")]):_vm._e(),_vm._v(\" \"),(template.options)?[_vm._l((_vm.visibleSystemThumbnails(\n                              template.options,\n                            )),function(iconObj,iconIndex){return [(_vm.getThumbnailURL(iconObj.value))?_c('div',{key:iconIndex,staticClass:\"system-logo\"},[_c(VImg,{attrs:{\"src\":_vm.getThumbnailURL(iconObj.value),\"width\":25}})],1):_vm._e()]})]:_vm._e()],2),_vm._v(\" \"),_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                        \"+_vm._s(template.name || template.code)+\"\\n                      \")])])]})]:_vm._e(),_vm._v(\" \"),(_vm.hasTenantTemplateCreatePerm)?_c('div',{staticClass:\"template-card create-new\",on:{\"click\":function($event){return _vm.createTemplate()}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-circle-plus\"}}),_vm._v(\" \"),_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                    \"+_vm._s(_vm._(\"Create_template\"))+\"\\n                  \")])],1):_vm._e()],2),_vm._v(\" \"),_c('span',{staticClass:\"text-separator\"},[_c('div',{staticClass:\"line\"}),_vm._v(\" \"),_c('div',{staticClass:\"or-text\"},[_vm._v(\"\\n                  \"+_vm._s(_vm._(\"or\"))+\"\\n                \")])])]:_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"d-flex gap-4\"},[_c('div',{staticClass:\"selection-card\",attrs:{\"data-test-id\":\"switch-to-simple-mode-btn\"},on:{\"click\":function($event){return _vm.setDefault()}}},[_c('FontAwesomeIcon',{staticClass:\"rotate-180\",attrs:{\"icon\":\"far fa-share-nodes\"}}),_vm._v(\" \"),_c('div',{staticClass:\"text-wrapper\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                    \"+_vm._s(_vm._(\"Default_setup_title\"))+\"\\n                  \")]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"},[_vm._v(\"\\n                    \"+_vm._s(_vm._(\"Default_setup_byline\"))+\"\\n                  \")])])],1),_vm._v(\" \"),(_vm.hasUiTenantDetailedPerm)?_c('div',{staticClass:\"selection-card\",attrs:{\"data-test-id\":\"switch-to-detailed-mode-btn-selection-card\"},on:{\"click\":function($event){return _vm.setDetailed()}}},[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-list-check\"}}),_vm._v(\" \"),_c('div',{staticClass:\"text-wrapper\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                    \"+_vm._s(_vm._(\"Detailed_setup_title\"))+\"\\n                  \")]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"},[_vm._v(\"\\n                    \"+_vm._s(_vm._(\"Detailed_setup_byline\"))+\"\\n                  \")])])],1):_vm._e()])],2):_c('div',[_c('div',{staticClass:\"settings-wrapper mb-4\"},[_c('div',{staticClass:\"settings-wrapper-header\"},[(_vm.isTemplate)?_c('span',[_vm._v(\"\\n                  \"+_vm._s(_vm._(\"Tenant_template_details\"))+\"\\n                \")]):_c('span',[_vm._v(\"\\n                  \"+_vm._s(_vm._(\"Template_details\"))+\"\\n                \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),(_vm.onlyTenant && _vm.isTenantPayload(_vm.tenantData))?_c('div',{staticClass:\"btn-switch\"},[_c(VBtn,{class:{ active: _vm.tenantData.active },attrs:{\"data-test-id\":\"active-switch-button\"},on:{\"click\":function($event){_vm.tenantData.active = true}}},[_vm._v(\"\\n                    \"+_vm._s(_vm._(\"Active\"))+\"\\n                  \")]),_vm._v(\" \"),_c(VBtn,{class:{ inactive: !_vm.tenantData.active },attrs:{\"data-test-id\":\"inactive-switch-button\"},on:{\"click\":function($event){_vm.tenantData.active = false}}},[_vm._v(\"\\n                    \"+_vm._s(_vm._(\"Inactive\"))+\"\\n                  \")])],1):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"settings-inner-wrapper\"},[_c(VRow,{staticClass:\"pb-0 mb-0\"},[_c(VCol,{staticClass:\"setting-column\",attrs:{\"cols\":6}},[(_vm.isTemplate && _vm.isTenantTemplateType(_vm.tenantData))?_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(_vm._s(_vm._(\"Code\")))]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),_c(VTextField,{staticClass:\"pb-text-field\",attrs:{\"value\":_vm.tenantData.code,\"outlined\":\"\",\"dense\":\"\"},on:{\"change\":function($event){_vm.tenantData.code = $event}}})],1):(_vm.isTenantPayload(_vm.tenantData) && !_vm.isTemplate)?_c('div',[(\n                          _vm.codeNameSettable || (!_vm.codeNameSettable && !_vm.isCreate)\n                        )?_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(_vm._s(_vm._(\"Code_name\")))]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),_c(VTextField,{staticClass:\"pb-text-field\",attrs:{\"readonly\":_vm.isEdit,\"rules\":[\n                            _vm.DefaultValidators.minLength(3),\n                            _vm.DefaultValidators.correctLoginFormat(),\n                          ],\"value\":_vm.tenantData.codeName,\"rule-label\":_vm._('Code_name'),\"outlined\":\"\",\"dense\":\"\",\"data-test-id\":\"code-name-text-field\"},on:{\"input\":function($event){return _vm.$set(_vm.tenantData, 'codeName', $event)}}})],1):_vm._e(),_vm._v(\" \"),(\n                          _vm.onlyTenant && (_vm.isDetailedMode || !_vm.codeNameSettable)\n                        )?_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('div',{staticClass:\"d-flex gap-2\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                              \"+_vm._s(_vm._(\"Customer_reference\"))+\"\\n                            \")]),_vm._v(\" \"),_c('PbTooltip',{attrs:{\"text\":_vm._('Customer_reference_tooltip')}})],1),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),_c(VTextField,{staticClass:\"pb-text-field\",attrs:{\"value\":_vm.tenantData.customerReference,\"rule-label\":_vm._('Customer_reference'),\"outlined\":\"\",\"dense\":\"\",\"data-test-id\":\"customer-reference-text-field\"},on:{\"input\":function($event){return _vm.$set(_vm.tenantData, 'customerReference', $event)}}})],1):_vm._e()]):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(_vm._s(_vm._(\"Name\")))]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),(_vm.isTemplate && _vm.isTenantTemplateType(_vm.tenantData))?_c(VTextField,{staticClass:\"pb-text-field\",attrs:{\"value\":_vm.tenantData.name,\"rules\":[_vm.DefaultValidators.required],\"rule-label\":_vm._('Name'),\"outlined\":\"\",\"dense\":\"\"},on:{\"change\":function($event){return _vm.$set(_vm.tenantData, 'name', $event)},\"input\":function($event){return _vm.$set(_vm.tenantData, 'name', $event)}}}):(_vm.isTenantPayload(_vm.tenantData))?_c(VTextField,{staticClass:\"pb-text-field\",attrs:{\"value\":_vm.tenantData.fullName,\"outlined\":\"\",\"dense\":\"\",\"data-test-id\":\"full-name-text-field\"},on:{\"change\":function($event){_vm.tenantData.fullName = $event}}}):_vm._e()],1),_vm._v(\" \"),(_vm.onlyTenant && _vm.isTenantPayload(_vm.tenantData))?_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(_vm._s(_vm._(\"Email\")))]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),_c(VTextField,{staticClass:\"pb-text-field\",attrs:{\"rules\":[_vm.DefaultValidators.isEmail],\"value\":_vm.tenantData.email,\"rule-label\":_vm._('Email'),\"outlined\":\"\",\"dense\":\"\",\"type\":\"email\",\"data-test-id\":\"email-text-field\"},on:{\"change\":function($event){_vm.tenantData.email = $event}}})],1):_vm._e(),_vm._v(\" \"),(_vm.isTenantPayload(_vm.tenantData))?_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(_vm._s(_vm._(\"Note\")))]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),_c(VTextarea,{staticClass:\"pb-text-field\",attrs:{\"value\":_vm.tenantData.comments,\"rows\":1,\"outlined\":\"\",\"data-test-id\":\"comments-text-field\"},on:{\"change\":function($event){_vm.tenantData.comments = $event}}})],1):_vm._e(),_vm._v(\" \"),(_vm.isDetailedMode && _vm.isAdmin)?_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                          \"+_vm._s(_vm._(\"White_label\"))+\"\\n                        \")]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),_c(VTextField,{staticClass:\"pb-text-field\",attrs:{\"value\":_vm.tenantData.whiteLabel,\"outlined\":\"\",\"dense\":\"\"},on:{\"change\":function($event){_vm.tenantData.whiteLabel = $event}}})],1):_vm._e(),_vm._v(\" \"),(_vm.showTenantCostSetting)?_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                          \"+_vm._s(_vm._(\"Set_cost_title\"))+\"\\n                        \")]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"},[_vm._v(\"\\n                          \"+_vm._s(_vm._(\"Set_cost_byline\"))+\"\\n                        \")])]),_vm._v(\" \"),_c('div',{staticClass:\"d-flex flex-col\"},[_c('PbSelect',{staticClass:\"pb-select\",attrs:{\"value\":_vm.tenantSize,\"items\":_vm.tenantSizes},on:{\"change\":function($event){_vm.tenantSize = $event}}}),_vm._v(\" \"),(!_vm.tenantSize)?_c(VTextField,{staticClass:\"pb-text-field width-110\",attrs:{\"value\":_vm.customShardCost,\"outlined\":\"\",\"dense\":\"\",\"type\":\"number\"},on:{\"change\":function($event){_vm.customShardCost = $event}}}):_vm._e()],1)]):_vm._e()]),_vm._v(\" \"),_c(VCol,{staticClass:\"setting-column\",attrs:{\"cols\":6}},[_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(_vm._s(_vm._(\"Country\")))]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),_c('CoreAutocomplete',{staticClass:\"pb-select\",attrs:{\"items\":_vm.defaultCountryList,\"rules\":_vm.isEdit ? [] : [_vm.DefaultValidators.required],\"value\":_vm.tenantData.defaultCountry,\"rule-label\":_vm._('Country'),\"placeholder\":\" \",\"item-value\":\"code2\",\"item-text\":\"name\",\"data-test-id\":\"country-select\"},on:{\"change\":function($event){return _vm.$set(_vm.tenantData, 'defaultCountry', $event)}}})],1),_vm._v(\" \"),(_vm.isDetailedMode)?_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(_vm._s(_vm._(\"Additional_countries\")))]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),_c('CoreSelect',{staticClass:\"pb-select full-width\",attrs:{\"items\":_vm.countries,\"rules\":[_vm.DefaultValidators.required],\"value\":_vm.tenantData.countries,\"rule-label\":_vm._('Countries'),\"multiple\":\"\",\"outlined\":\"\",\"dense\":\"\",\"placeholder\":\" \",\"item-value\":\"code2\",\"item-text\":\"name\"},on:{\"change\":function($event){_vm.tenantData.countries = $event}}})],1):_vm._e(),_vm._v(\" \"),_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(_vm._s(_vm._(\"Time_zone\")))]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),_c('CoreAutocomplete',{staticClass:\"pb-select\",attrs:{\"items\":_vm.timeZones,\"rules\":_vm.isEdit ? [] : [_vm.DefaultValidators.required],\"value\":_vm.tenantData.defaultTimeZone,\"rule-label\":_vm._('Time_zone'),\"placeholder\":\" \",\"item-value\":\"code\",\"item-text\":\"name\",\"data-test-id\":\"time-zone-select\"},on:{\"change\":function($event){return _vm.$set(_vm.tenantData, 'defaultTimeZone', $event)}}})],1),_vm._v(\" \"),_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(_vm._s(_vm._(\"Language\")))]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),_c('CoreAutocomplete',{staticClass:\"pb-select\",attrs:{\"items\":_vm.languages,\"rules\":[_vm.DefaultValidators.required],\"value\":_vm.tenantData.defaultLanguage,\"rule-label\":_vm._('Language'),\"placeholder\":\" \",\"data-test-id\":\"language-select\"},on:{\"change\":function($event){return _vm.$set(_vm.tenantData, 'defaultLanguage', $event)}}})],1),_vm._v(\" \"),(_vm.isDetailedMode)?_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                          \"+_vm._s(_vm._(\"Additional_languages\"))+\"\\n                        \")]),_vm._v(\" \"),_c('span',{staticClass:\"byline-label\"})]),_vm._v(\" \"),_c('PbSelect',{staticClass:\"pb-select\",attrs:{\"items\":_vm.languages,\"multiple\":\"\"},model:{value:(_vm.tenantData.languages),callback:function ($$v) {_vm.$set(_vm.tenantData, \"languages\", $$v)},expression:\"tenantData.languages\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isDetailedMode && _vm.isAdmin && _vm.tenantData.connectorOptions)?_c('div',{staticClass:\"tenant-setting-group\"},[_c('span',{staticClass:\"group-label\"},[_vm._v(\"\\n                        \"+_vm._s(_vm._('Max_num_connection'))+\"\\n                      \")]),_vm._v(\" \"),_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                            \"+_vm._s(_vm._('Max_total_connections'))+\"\\n                          \")]),_vm._v(\" \"),_c('PbTooltip',{attrs:{\"text\":_vm._('Max_total_connections_tooltip')}})],1),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c(VTextField,{staticClass:\"small-icon width-110\",attrs:{\"placeholder\":_vm._('Unlimited'),\"dense\":\"\",\"hide-details\":\"\",\"outlined\":\"\",\"type\":\"number\",\"min\":\"0\"},model:{value:(_vm.tenantData.connectorOptions.maxTotalConnections),callback:function ($$v) {_vm.$set(_vm.tenantData.connectorOptions, \"maxTotalConnections\", $$v)},expression:\"tenantData.connectorOptions.maxTotalConnections\"}})],1),_vm._v(\" \"),_c('div',{staticClass:\"tenant-setting\"},[_c('div',{staticClass:\"details\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                            \"+_vm._s(_vm._('Max_default_connections'))+\"\\n                          \")]),_vm._v(\" \"),_c('PbTooltip',{attrs:{\"text\":_vm._('Max_default_connections_tooltip')}})],1),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('div',{staticClass:\"nested-input-wrapper\"},[_c('div',{staticClass:\"nested-input\"},[_c('span',{staticClass:\"nested-input-label\"},[_vm._v(\"Default\")]),_vm._v(\" \"),_c(VTextField,{staticClass:\"small-icon width-110\",attrs:{\"placeholder\":_vm._('Unlimited'),\"dense\":\"\",\"hide-details\":\"\",\"outlined\":\"\",\"min\":\"0\",\"type\":\"number\"},model:{value:(_vm.tenantData.connectorOptions.defaultMaxConnections),callback:function ($$v) {_vm.$set(_vm.tenantData.connectorOptions, \"defaultMaxConnections\", $$v)},expression:\"tenantData.connectorOptions.defaultMaxConnections\"}})],1),_vm._v(\" \"),(_vm.isSet(_vm.tenantData.connectorOptions.perConnector))?_vm._l((_vm.tenantData.connectorOptions.perConnector),function(connector,key){return _c('div',{key:'options' + key,staticClass:\"nested-input\"},[_c('span',{staticClass:\"nested-input-label\"},[_vm._v(_vm._s(_vm._(key)))]),_vm._v(\" \"),_c(VTextField,{staticClass:\"small-icon width-110\",attrs:{\"value\":_vm.tenantData?.connectorOptions?.perConnector?.[key]?.maxConnections,\"placeholder\":_vm._('Unlimited'),\"dense\":\"\",\"hide-details\":\"\",\"outlined\":\"\",\"type\":\"number\",\"min\":\"0\"},on:{\"change\":function($event){return _vm.addConnector(key, $event)}}})],1)}):_vm._e(),_vm._v(\" \"),_c(VMenu,{attrs:{\"offset-y\":\"\",\"left\":\"\",\"content-class\":\"bg-white\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({staticClass:\"primary mt-1\",attrs:{\"small\":\"\",\"text\":\"\",\"depressed\":\"\"}},on),[_vm._v(\"\\n                                \"+_vm._s(_vm._(\"Set_specific_connector\"))+\"\\n                                \"),_c(VIcon,[_vm._v(\"fas fa-chevron-down\")])],1)]}}],null,false,1863044305)},[_vm._v(\" \"),_c(VList,{staticClass:\"assistant-select-list\",attrs:{\"max-height\":\"500\"}},[_vm._l((_vm.sortedConnectors),function(conn,index){return [_c(VListItem,{key:'conn' + index,attrs:{\"link\":\"\",\"dense\":\"\"},on:{\"click\":function($event){return _vm.addConnector(conn.value, undefined)}}},[_c(VListItemContent,[_c(VListItemTitle,[_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(conn.name))])])],1)],1)]})],2)],1)],2)],1)]):_vm._e()])],1)],1)])])]),_vm._v(\" \"),(_vm.isDetailedMode && _vm.isNonEmptyArray(_vm.visibleAvailableAssistants))?_c(VRow,[_c(VCol,{attrs:{\"cols\":12}},[_c('div',{staticClass:\"d-flex flex-col gap-4 assistants-wrapper\"},[_c('div',{staticClass:\"card-wrapper\"},[_c('div',{staticClass:\"card-header\"},[_c('span',{staticClass:\"card-title\"},[_vm._v(\"\\n                    \"+_vm._s(_vm._(\"Assistants\"))+\"\\n                  \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c(VMenu,{attrs:{\"offset-y\":\"\",\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({staticClass:\"primary\",attrs:{\"small\":\"\",\"text\":\"\",\"depressed\":\"\"}},on),[_vm._v(\"\\n                        \"+_vm._s(_vm._(\"Add\"))+\"\\n                      \")])]}}],null,false,3326752237)},[_vm._v(\" \"),_c(VList,{staticClass:\"assistant-select-list\"},[_vm._l((_vm.visibleAvailableAssistants),function(ass){return [(!_vm.assistantCanBeAdded(ass))?_c(VTooltip,{key:ass.code,attrs:{\"top\":\"\",\"content-class\":\"inverted-tooltip\",\"min-width\":\"200\",\"max-width\":\"400\",\"open-delay\":\"500\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('div',_vm._g({},on),[_c(VListItem,{attrs:{\"disabled\":\"\",\"link\":\"\"},on:{\"click\":function($event){return _vm.addAssistant(ass)}}},[_c(VListItemContent,[_c(VListItemTitle,[_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(_vm._(\"assistant_\" + ass.code)))])])],1)],1)],1)]}}],null,true)},[_vm._v(\" \"),_c('span',{staticClass:\"tooltip-opts-hint\"},[_c('span',{staticClass:\"title-label\"},[_vm._v(\"\\n                              \"+_vm._s(_vm._(\"Error_assistants\"))+\"\\n                            \")]),_vm._v(\" \"),_c('div',{domProps:{\"innerHTML\":_vm._s(_vm.optsPreventingAssistantFromBeingAdded(ass)\n                              )}})])]):_c(VListItem,{key:ass.code,attrs:{\"link\":\"\"},on:{\"click\":function($event){return _vm.addAssistant(ass)}}},[_c(VListItemContent,[_c(VListItemTitle,[_c('span',{staticClass:\"label\"},[_vm._v(_vm._s(_vm._(\"assistant_\" + ass.code)))])])],1)],1)]})],2)],1)],1),_vm._v(\" \"),(_vm.isTenantCommon(_vm.tenantData) && _vm.isNonEmptyArray(_vm.tenantData.assistants))?_vm._l((_vm.tenantData.assistants || []),function(ass,index){return _c('div',{key:index,staticClass:\"bg-light-grey pa-3\"},[_c('div',{staticClass:\"assistant-card card-wrapper\"},[_c('div',{staticClass:\"assistant-card-header\"},[_c('div',{staticClass:\"d-flex flex-col flex-grow-1\"},[_c(VTextField,{staticClass:\"small-icon mt-2 mb-1\",attrs:{\"label\":_vm.getAssistantName(ass.code),\"dense\":\"\",\"hide-details\":\"\",\"outlined\":\"\",\"autofocus\":\"\"},model:{value:(ass.name),callback:function ($$v) {_vm.$set(ass, \"name\", $$v)},expression:\"ass.name\"}})],1),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),(_vm.tenantData.assistants)?_c(VBtn,{staticClass:\"small-icon\",attrs:{\"icon\":\"\"},on:{\"click\":function($event){return _vm.tenantData.assistants.splice(index, 1)}}},[_c('FontAwesomeIcon',{attrs:{\"small\":\"\",\"icon\":\"fa-solid fa-trash-can\",\"color\":\"grey\"}})],1):_vm._e()],1),_vm._v(\" \"),_c(VRow,{staticClass:\"pa-4 pb-0\"},[_c(VCol,{attrs:{\"cols\":12}},[(_vm.tenantData.assistants)?_c(VTextarea,{staticClass:\"pb-text-field\",attrs:{\"value\":_vm.tenantData?.assistants?.[index]?.comments,\"rows\":1,\"outlined\":\"\"},on:{\"change\":function($event){return _vm.addComment(index, $event)}}}):_vm._e()],1)],1),_vm._v(\" \"),_c(VRow,{staticClass:\"pa-4 pt-0 mt-0\"},[_c(VCol,{attrs:{\"cols\":6}},[_c('div',{staticClass:\"assistant-col-card card-wrapper\"},[_c('span',{staticClass:\"header-label\"},[_vm._v(\"\\n                              \"+_vm._s(_vm._(\"Connections\"))+\"\\n                            \")]),_vm._v(\" \"),_c('div',{staticClass:\"assistant-col-card-items pa-3\"},[_vm._l((_vm.getGroups(\n                                  _vm.getAssistantDefinition(ass.code),\n                                )),function(group,gIndex){return [_c('AssistantSystemSelectWrapper',{key:gIndex,attrs:{\"group\":group,\"options\":_vm.tenantData?.options},on:{\"click\":function($event){return _vm.changeGroupSelection(group, $event.value)},\"update-options\":function($event){return _vm.addOptsOrRemove($event)}}})]})],2)])]),_vm._v(\" \"),_c(VCol,{attrs:{\"cols\":6}},[(_vm.notEmptyObject(_vm.getAssistantDefinition(ass?.code)?.parameters))?_c('div',{staticClass:\"assistant-col-card card-wrapper\"},[_c('span',{staticClass:\"header-label\"},[_vm._v(\"\\n                              \"+_vm._s(_vm._(\"Parameters\"))+\"\\n                            \")]),_vm._v(\" \"),_c('div',{staticClass:\"assistant-col-card-items pa-3\"},[_vm._l((_vm.getAssistantParameters(ass.code)),function(obj,fieldName){return [(_vm.isNonEmptyArray(obj.values))?_c('div',{key:fieldName,staticClass:\"assistant-col-card-item\"},[_c('span',{staticClass:\"label ml-2\"},[_vm._v(_vm._s(_vm._(fieldName)))]),_vm._v(\" \"),_c(VSelect,{staticClass:\"pb-select\",attrs:{\"value\":ass?.parameters?.[fieldName] ||\n                                      obj.defaultValue,\"items\":obj.values,\"outlined\":\"\",\"hide-details\":\"\",\"dense\":\"\"},on:{\"change\":function($event){return _vm.changeParameterValue(ass, fieldName, $event)}},scopedSlots:_vm._u([{key:\"item\",fn:function({ item }){return [_vm._v(\"\\n                                      \"+_vm._s(_vm.translateParameterValue(fieldName, item))+\"\\n                                    \")]}},{key:\"selection\",fn:function({ item }){return [_vm._v(\"\\n                                      \"+_vm._s(_vm.translateParameterValue(fieldName, item))+\"\\n                                    \")]}}],null,true)})],1):_vm._e()]})],2)]):_vm._e()])],1)],1)])}):_c('div',{staticClass:\"no-assistants\"},[_vm._v(\"\\n                  \"+_vm._s(_vm._(\"No_assistants\"))+\"\\n                \")])],2),_vm._v(\" \"),_c('CheckboxList',{attrs:{\"available-options\":_vm.tenantOptions,\"selected-options\":_vm.tenantData?.options || [],\"grouped-options\":_vm.perms,\"disabled-opts\":_vm.disabledOpts,\"header-title\":_vm._('Options'),\"edit-type\":_vm.EditTypeEnum.Tenant},on:{\"change\":function($event){return _vm.updateOptions($event.list, false)}}})],1)])],1):_vm._e(),_vm._v(\" \"),(_vm.isNonEmptyArray(_vm.availableAssistants))?_c('SalesFlow',{ref:\"sales-flow\",attrs:{\"options\":_vm.tenantData?.options,\"current-assistants\":_vm.tenantData?.assistants,\"assistant-definitions\":_vm.availableAssistants,\"is-default-mode\":_vm.isDefaultMode,\"tenant-country\":_vm.tenantData.defaultCountry},on:{\"update-tenant-data\":function($event){return _vm.updateTenantDataSalesFlow($event)},\"change-group-selection\":function($event){return _vm.changeGroupSelection($event.group, $event.value)},\"update-options\":function($event){return _vm.addOptsOrRemove($event)}}}):_vm._e()],1),_vm._v(\" \"),_c('TenantCreateConfirmDialog',{ref:\"tenantCreateConfirmDialog\",attrs:{\"show-save-as\":_vm.showSaveAs}})],1):_vm._e()],1),_vm._v(\" \"),_c('DataViewDialog',{ref:\"dataViewDialog\",attrs:{\"no-save\":false,\"automatic-load-at-save\":false,\"disable-save\":!_vm.tempCustomData,\"only-custom-data\":\"\"},on:{\"save\":function($event){return _vm.updateCustomData(_vm.tempCustomData)}},scopedSlots:_vm._u([{key:\"top\",fn:function(){return [_c('EditCustomData',{attrs:{\"custom-data\":_vm.tenantData.customData,\"is-create\":_vm.isCreate},on:{\"change\":function($event){_vm.tempCustomData = $event}}})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent } from \"vue\"\n\nimport { controlMixin } from \"@/mixins\"\nimport basedialogmixin from \"@/mixins/basedialogmixin\"\n\nimport {\n  DefaultValidators,\n  DefaultValidatorsType,\n  Validation,\n} from \"@/modules/utils/validators\"\nimport { _ } from \"@/modules/utils/localehelpers\"\nimport Locale from \"@/modules/utils/locales\"\nimport Language from \"@/modules/utils/language\"\nimport SortOptions from \"@/modules/utils/sort-options\"\nimport Util from \"@/modules/utils/util\"\nimport VueHelper from \"@/modules/utils/vuehelper\"\n\nimport AssistantUtils from \"@/modules/tenant-edit-dialog/assistant-utils\"\nimport { SalesFlowTenant, SalesFlowUtils } from \"@/modules/tenant-edit-dialog/sales-flow-utils\"\nimport { TenantEditDialogUtils } from \"@/modules/tenant-edit-dialog/tenant-edit-dialog-utils\"\n\nimport Tenant from \"@/modules/managers/tenant\"\nimport TenantTemplate from \"@/modules/managers/tenant-template\"\n\nimport Reseller from \"@/modules/injected-js-handlers/reseller\"\nimport ResellerUser from \"@/modules/injected-js-handlers/reseller-user\"\n\nimport {\n  Assistant,\n  AssistantDefinition,\n  ConnectorObject,\n  ConnectorOptions as ConnectorOptionsType,\n  Country,\n  GroupedOptionObject,\n  isAllOf,\n  isAnyOf,\n  isConditionalIf,\n  isNoneOf,\n  isOpt,\n  Language as LanguageType,\n  Tenant as TenantType,\n  TenantOptionRule,\n  TenantOptionRuleGroup,\n  TenantOptionRuleOpt,\n  TenantTemplate as TenantTemplateType,\n  TenantCommon,\n  AssistantParameter,\n  TimeZone,\n  SuccessResponse,\n  FailureResponse,\n  EditType,\n} from \"@/types\"\n\nimport {\n  AssistantSystemSelectWrapper,\n  CheckboxList,\n  PbSelect,\n  PbTooltip,\n  TenantCreateConfirmDialog,\n  SalesFlow,\n  CoreSelect,\n  CoreAutocomplete,\n  BaseDialog,\n  DataViewDialog,\n  EditCustomData,\n} from \"@/components\"\n\ntype PaymentOption = {\n  value: string,\n  text: string,\n}\n\ninterface TenantTemplatePayloadObject {\n  localId?: string,\n}\n\ninterface TenantPayload extends TenantType {\n  tenantTemplate?: TenantTemplatePayloadObject | undefined,\n  cmd?: string\n}\n\ninterface TenantTemplatePayload extends TenantTemplateType {\n  cmd?: string,\n  shardCost?: number,\n}\n\ninterface UIAssistantDefinition extends AssistantDefinition {\n  text?: string\n}\n\n/* eslint-disable no-unused-vars */\nenum Mode {\n  default = \"default\",\n  detailed = \"detailed\",\n  welcome = \"welcome\"\n}\n\nenum Command {\n  create = \"create\",\n  edit = \"edit\"\n}\n/* eslint-enable no-unused-vars */\n\nconst DefaultTenantSizeCost: number = 1000\n\ninterface State {\n  selectedMode: Mode.default | Mode.detailed | Mode.welcome,\n  command: Command.create | Command.edit,\n\n  loading: boolean,\n  tenantData: TenantPayload | TenantTemplateType | TenantCommon,\n  tempCustomData: any,\n\n  tenantDefaultWL: string | undefined,\n  tenantOptions: string[],\n  DefaultValidators: DefaultValidatorsType,\n  perms: GroupedOptionObject,\n  availableAssistants: UIAssistantDefinition[],\n  templates: TenantTemplateType[],\n\n  paymentOptions: PaymentOption[],\n  connectors: Record<string, ConnectorObject>,\n\n  tenantSizes: { text: string, value: number | null }[],\n  tenantSize: number | null,\n  customShardCost: number | null,\n}\n\ntype LanguageItem = {\n  text: string,\n  value: string,\n}\n\nexport default defineComponent({\n  name: \"TenantEditDialog\",\n\n  components: {\n    EditCustomData,\n    AssistantSystemSelectWrapper,\n    CheckboxList,\n    PbSelect,\n    PbTooltip,\n    TenantCreateConfirmDialog,\n    SalesFlow,\n    CoreSelect,\n    CoreAutocomplete,\n    BaseDialog,\n    DataViewDialog,\n  },\n\n  mixins: [ controlMixin, basedialogmixin ],\n\n  props: {\n    isTemplate: Boolean,\n  },\n\n  data(): State {\n    return {\n      selectedMode: Mode.welcome,\n      command: Command.create,\n\n      loading: true,\n      tenantData: {},\n      tempCustomData: null,\n      tenantDefaultWL: Reseller.defaultWhiteLabel(),\n\n      tenantOptions: Reseller.allowableTenantOptions().sort(),\n      DefaultValidators: DefaultValidators,\n      perms: {},\n      availableAssistants: [],\n      templates: [],\n\n      paymentOptions: [\n        {\n          value: \"payouts\",\n          text: Locale.translate(\"Payouts\"),\n        },\n      ],\n      connectors: ConnectorOptions.allConnectorsMap,\n\n      tenantSizes: [\n        { text: Locale.translate(\"Tiny\"), value: 100 },\n        { text: Locale.translate(\"Small\"), value: 250 },\n        { text: Locale.translate(\"Default\"), value: DefaultTenantSizeCost },\n        { text: Locale.translate(\"Large\"), value: 4000 },\n        { text: Locale.translate(\"Huge\"), value: 10000 },\n        { text: Locale.translate(\"Custom\"), value: null },\n      ],\n      tenantSize: DefaultTenantSizeCost,\n      customShardCost: null,\n    }\n  },\n\n  computed: {\n    headerText() {\n      if (this.isTemplate) {\n        return this.isCreate ? Locale.translate(\"Create_template\") : Locale.translate(\"Edit_template\")\n      }\n      else {\n        return this.isCreate ? Locale.translate(\"Create_tenant\") : Locale.translate(\"Edit_tenant\")\n      }\n    },\n\n    /* Make enum available in template */\n    EditTypeEnum() {\n      return EditType\n    },\n\n    codeNameSettable() {\n      return Reseller.hasOption(\"tenant.codename.settable\")\n    },\n\n    currentSetupIsTemplate(): boolean {\n      const mandatoryRequirements: boolean[] = [\n        Util.isNonEmptyArray(this.templates),\n        Util.isNonEmptyArray(this.tenantData?.options),\n      ]\n\n      if (mandatoryRequirements.some(c => !c)) {\n        return false\n      }\n\n      const checkIfTrue = (template: TenantTemplateType): boolean => {\n        if (template.options === undefined) return false\n        if (this.tenantData.options === undefined) return false\n\n        const checks: boolean[] = [\n          Util.isNonEmptyArray(template.options),\n          template.options.length === this.tenantData.options.length,\n          template.options.every((option: string) => (this.tenantData.options as string[]).includes(option)),\n          (this.tenantData.options as string[]).every(option => (template.options as string[]).includes(option)),\n        ]\n\n        return checks.every(c => c)\n      }\n\n      return this.templates.some(template => checkIfTrue(template))\n    },\n\n    usesTemplate(): boolean {\n      const tenantData = (this.tenantData as TenantPayload)\n      return Util.isSet(tenantData?.tenantTemplate?.localId)\n    },\n\n    sortedConnectors(): ConnectorObject[] {\n      const values: ConnectorObject[] =\n        (Object.values((this.connectors as Record<string, ConnectorObject>)) as ConnectorObject[])\n\n      return values\n        .sort((a: ConnectorObject, b: ConnectorObject) => (a.name).localeCompare(b.name))\n    },\n\n    defaultCountryList(): Country[] {\n      const sortOrder = [ \"SE\", \"NO\", \"DK\", \"FI\", \"NL\", \"GB\" ]\n\n      const sortedCountries = this.countries\n        .filter(country => sortOrder.includes(country.code2))\n        .sort((a, b) => sortOrder.indexOf(a.code2) - sortOrder.indexOf(b.code2))\n\n      const otherCountries = this.countries\n        .filter(country => !sortOrder.includes(country.code2))\n        .sort((a, b) => a.name.localeCompare(b.name))\n\n      return [ ...sortedCountries, ...otherCountries ]\n    },\n\n    isAdmin(): boolean {\n      return ResellerUser.isAdmin()\n    },\n\n    isCreate(): boolean {\n      return (this.command as Command) === Command.create\n    },\n\n    isEdit(): boolean {\n      return (this.command as Command) === Command.edit\n    },\n\n    onlyTenant(): boolean {\n      return !this.isTemplate\n    },\n\n    showTenantCostSetting() {\n      const checks: boolean[] = [\n        this.isDetailedMode,\n        this.isTemplate,\n        this.hasTenantSetCostPerm,\n      ]\n\n      return checks.every(c => c)\n    },\n\n    isDetailedMode(): boolean {\n      return (this.selectedMode as Mode) === Mode.detailed\n    },\n\n    isDefaultMode(): boolean {\n      return (this.selectedMode as Mode) === Mode.default\n    },\n\n    isWelcomeMode(): boolean {\n      return (this.selectedMode as Mode) === Mode.welcome\n    },\n\n    timeZones(): TimeZone[] {\n      return Locale.allTimeZones()\n        .sort((a, b) => a.name.localeCompare(b.name))\n    },\n\n    countries(): Country[] {\n      return Locale.allCountries()\n        .sort((a, b) => a.name.localeCompare(b.name))\n    },\n\n    languages(): LanguageItem[] {\n      const validAssistantLanguages = [\n        \"swe\",\n        \"eng\",\n        \"fin\",\n        \"dan\",\n        \"nor\",\n        \"nld\",\n      ]\n\n      const mapToLangItem = (lang: LanguageType | undefined): LanguageItem | undefined => {\n        if (lang) {\n          return {\n            text: Locale.capitalize(lang.name),\n            value: lang.code3,\n          }\n        }\n\n        return undefined\n      }\n\n      if (this.isDetailedMode) {\n        return Language.allLanguages()\n          .sort(Language.customSort)\n          .map(obj => ({\n            text: obj.name,\n            value: obj.code3,\n          }))\n      }\n      else {\n        return validAssistantLanguages\n          .map((code3: string) => mapToLangItem(Language.allLanguagesMap()[code3]))\n          .filter(obj => obj !== undefined)\n      }\n    },\n\n    disabledOpts(): string[] {\n      if (!this.hasAssistants) return []\n      const disabledOpts: string[] = []\n\n      for (let assistant of (this.tenantData.assistants) as Assistant[]) {\n        const definition = this.getAssistantDefinition((assistant.code as string))\n\n        if (definition) {\n          const rootOptions = SalesFlowUtils.getRootOptions(definition)\n          disabledOpts.push(...(rootOptions || []))\n\n          const groups = this.getGroups(definition)\n\n          for (let group of groups) {\n            for (let system of group.systems) {\n              if (TenantEditDialogUtils.isGroupActive(group, system, (this.tenantData.options as string[]))) {\n                disabledOpts.push(...AssistantUtils.getOpts(group, system))\n              }\n            }\n          }\n        }\n      }\n\n      return Array.of(...new Set(disabledOpts))\n    },\n\n    hasAssistants(): boolean {\n      return Util.isNonEmptyArray(this.tenantData.assistants)\n    },\n\n    allFieldsAreFilledInCorrectly(): boolean {\n      const tenantData = (this.tenantData as TenantPayload)\n\n      const isCodeNameFilledIn = (): boolean => {\n        if (this.isTemplate) return true\n        if (!this.tenantData) return false\n\n        if (this.codeNameSettable)\n          return Util.isSet(tenantData?.codeName)\n        if (!this.codeNameSettable)\n          return Util.isSet(tenantData?.customerReference)\n\n        return true\n      }\n\n      // @ts-ignore refs\n      // let valid = new Validation(this.$refs.form)\n\n      const alwaysRequired: boolean[] = [\n        isCodeNameFilledIn(),\n        Util.isSet(this?.tenantData?.defaultLanguage),\n        this.isTemplate ? Util.isSet((this?.tenantData as TenantTemplateType)?.name) : true,\n        // !valid.hasErrors(),\n        this.isDefaultMode ? Util.isNonEmptyArray(this.tenantData.options) : true,\n      ]\n\n      if (!alwaysRequired.every((b) => b)) return false\n\n      if (this.hasAssistants) {\n        for (let assistant of (tenantData.assistants as Assistant[])) {\n          if (!this.tenantHasAllRequiredOptsForAssistant(assistant)) {\n            return false\n          }\n        }\n      }\n\n      return true\n    },\n\n    visibleAvailableAssistants(): UIAssistantDefinition[] {\n      return (SalesFlowUtils\n        .visibleAvailableAssistants(this.availableAssistants) as UIAssistantDefinition[])\n    },\n\n    showSaveAs(): boolean {\n      const checks: boolean[] = [\n        !this.isTemplate,\n        !this.usesTemplate,\n        !this.currentSetupIsTemplate,\n        this.isCreate,\n      ]\n\n      return checks.every(c => c)\n    },\n  },\n\n  watch: {\n    tenantData: {\n      deep: true,\n      handler(value) {\n        if (Util.isSet(value.defaultCountry) && !Util.isSet(this.tenantData.defaultTimeZone)) {\n          switch (value.defaultCountry) {\n            case \"SE\": {\n              this.tenantData.defaultTimeZone = \"Europe/Stockholm\"\n              break\n            }\n            case \"NO\": {\n              this.tenantData.defaultTimeZone = \"Europe/Oslo\"\n              break\n            }\n            case \"DK\": {\n              this.tenantData.defaultTimeZone = \"Europe/Copenhagen\"\n              break\n            }\n            case \"FI\": {\n              this.tenantData.defaultTimeZone = \"Europe/Helsinki\"\n              break\n            }\n            case \"NL\": {\n              this.tenantData.defaultTimeZone = \"Europe/Amsterdam\"\n              break\n            }\n            case \"GB\": {\n              this.tenantData.defaultTimeZone = \"Europe/London\"\n              break\n            }\n          }\n        }\n\n        // If no WL is set and reseller got default WL\n        if (this.isCreate && !Util.isSet(this.tenantData.whiteLabel) && Util.isSet(this.tenantDefaultWL)) {\n          this.$set(this.tenantData, \"whiteLabel\", this.tenantDefaultWL)\n          this.$forceUpdate()\n        }\n      },\n    },\n    selectedMode: {\n      handler(value) {\n        if (Util.isSet(value)) {\n          // @ts-ignore\n          this.$nextTick(() => this.$refs.form?.validate())\n        }\n      },\n    },\n  },\n\n  mounted() {\n    this.resetValues()\n\n    Tenant.availableAssistants()\n      .then((list: AssistantDefinition[]) => {\n        this.availableAssistants = (list\n          .map((ass: AssistantDefinition) => {\n            (ass as UIAssistantDefinition).text = _(\"assistant_\" + ass.code)\n            return ass\n          })\n          .sort((a: UIAssistantDefinition, b: UIAssistantDefinition) => {\n            return String(a.text).localeCompare(String(b.text))\n          }) as UIAssistantDefinition[])\n      })\n\n    this.fetchTemplates()\n  },\n\n  methods: {\n    updateCustomData(customData: any) {\n      if (customData) {\n        this.$set(this.tenantData, \"customData\", customData)\n      }\n      // @ts-ignore\n      VueHelper.waitForRender(this, \"dataViewDialog\")\n        // @ts-ignore\n        .then(dlg => dlg.closeBaseDialog())\n    },\n\n    isTenantPayload(obj: TenantPayload | TenantTemplateType): obj is TenantPayload {\n      return (obj as TenantPayload).tenantTemplate !== undefined\n    },\n\n    isTenantTemplateType(obj: TenantPayload | TenantTemplateType): obj is TenantTemplateType {\n      return this.isTemplate\n    },\n\n    isTenantCommon(obj: TenantPayload | TenantTemplateType | TenantCommon): obj is TenantCommon {\n      return this.isTenantPayload(obj) || this.isTenantTemplateType(obj)\n    },\n\n    getAssistantDefinition(code: string | undefined): AssistantDefinition | undefined {\n      if (!code) return undefined\n      return TenantEditDialogUtils\n        .getAssistantDefinition(code, this.availableAssistants)\n    },\n\n    addConnector(typeCode: string, value: number | undefined) {\n      let options: ConnectorOptionsType = this.tenantData?.connectorOptions || {}\n\n      if (!Util.isSet(options)) options = {}\n      if (!Util.isSet(options.perConnector)) {\n        options.perConnector = {}\n      }\n\n      let typeCodeOptions = options.perConnector?.[typeCode]\n\n      if (options.perConnector !== undefined) {\n        if (!Util.isSet(typeCodeOptions)) {\n          options.perConnector[typeCode] = {}\n        }\n\n        options.perConnector[typeCode] = {\n          maxConnections: value,\n        }\n      }\n\n      this.$set(this.tenantData, \"connectorOptions\", options)\n      this.$forceUpdate()\n    },\n\n    systemsFromOptions(options: string[] | undefined): ConnectorObject[] {\n      if (!Util.isNonEmptyArray(options)) return []\n\n      return Object.values(this.connectors).filter((obj) =>\n        (options as string[]).includes(obj.opt)\n      )\n    },\n\n    leftSideColumn(ruleTag: string): boolean {\n      return (\n        ruleTag === \"source\" || ruleTag === \"ecommerce\" || ruleTag === \"pay\"\n      )\n    },\n\n    rightSideColumn(ruleTag: string): boolean {\n      return ruleTag === \"destination\" || ruleTag === \"erp\"\n    },\n\n    applyTemplate(templateLocalId: string | undefined) {\n      if (!templateLocalId) return\n      if (!this.tenantData) this.tenantData = {}\n\n      const tenantData = (this.tenantData as TenantPayload)\n\n      if (!tenantData.tenantTemplate) tenantData.tenantTemplate = {\n        localId: templateLocalId,\n      }\n\n      tenantData.tenantTemplate.localId = templateLocalId\n\n      if (Util.isSet(templateLocalId)) {\n        const template: TenantTemplateType | undefined = this.templates.find(\n          (t) => t.localId === templateLocalId\n        )\n\n        if (template) {\n          const assCode = template?.assistants?.[0]?.code\n          if (Util.isSet(assCode)) {\n            // @ts-ignore\n            VueHelper.waitForRender(this, \"sales-flow\", \"selectAssistant\")\n              // @ts-ignore\n              .then(comp => comp.selectAssistant(assCode))\n          }\n\n          const keys: Array<keyof TenantTemplateType> = (Object.keys(template) as Array<keyof TenantTemplateType>)\n\n          const reducedTemplate = keys.reduce((a: TenantTemplateType, b: keyof TenantTemplateType) => {\n            const keys: Array<keyof TenantTemplateType> = [\n              \"assistants\",\n              \"defaultLanguage\",\n              \"languages\",\n              \"options\",\n            ]\n\n            if (keys.includes(b)) {\n              // @ts-ignore\n              a[b] = template[b]\n            }\n\n            return a\n          }, ({} as TenantTemplateType))\n\n          this.$set(this, \"tenantData\", {\n            ...tenantData,\n            ...reducedTemplate,\n          })\n\n          const withAssistants = template && template.assistants && Util.isNonEmptyArray(template.assistants)\n          this.selectedMode = withAssistants\n            ? Mode.default\n            : Mode.detailed\n        }\n      }\n    },\n\n    getThumbnailURL(typeCode: string): string | null {\n      if (!typeCode) return null\n\n      const toUrl = (code: string): string =>\n        \"/public/assets/images/logo-connector-\" + code + \"-thumbnail.png\"\n\n      if (typeCode === \"vismaeaccounting\") {\n        switch (this.tenantData.defaultCountry) {\n          case \"SE\": return toUrl(\"vismaeekonomi\")\n          case \"FI\": return toUrl(\"vismaepasseli\")\n          default: return toUrl(typeCode)\n        }\n      }\n      else {\n        return toUrl(typeCode)\n      }\n    },\n\n    visibleSystemThumbnails(options: string[]): ConnectorObject[] {\n      return this.systemsFromOptions(options).slice(0, 3)\n    },\n\n    addAssistant(assistantDef: AssistantDefinition) {\n      if (this.assistantCanBeAdded(assistantDef)) {\n        if (!Util.isNonEmptyArray(this.tenantData.assistants)) {\n          this.$set(this.tenantData, \"assistants\", [])\n        }\n\n        if (this.tenantData.assistants) {\n          this.tenantData.assistants.push({\n            code: assistantDef.code,\n            name: _(\"assistant_\" + assistantDef.code),\n            parameters: {},\n          })\n        }\n\n        /* Apply required opts */\n        this.updateOptions(SalesFlowUtils.getRootOptions(assistantDef) || [], true)\n      }\n    },\n\n    tenantHasAllRequiredOptsForAssistant(assistant: Assistant): boolean {\n      const def = this.getAssistantDefinition((assistant.code as string))\n\n      if (def) {\n        return this.fulfillsOptions(def.requiredOptions)\n      }\n      return false\n    },\n\n    fulfillsOptions(holder: TenantOptionRule | TenantOptionRule[]): boolean {\n      return !Util.isNonEmptyArray(this.doesNotFulfillOptions(holder))\n    },\n\n    doesNotFulfillOptions(originalHolder: TenantOptionRule | TenantOptionRule[]): string[] {\n      const notFulfilled: TenantOptionRuleOpt[] = []\n\n      const helperFunc = (holder: TenantOptionRule | TenantOptionRule[],\n        addToList: boolean = true): boolean => {\n        if (Util.isNonEmptyArray(holder) && Array.isArray(holder)) {\n          return holder.every((optionHolder: TenantOptionRule) =>\n            helperFunc(optionHolder, addToList)\n          )\n        } else if (!Array.isArray(holder)) {\n          if (isAllOf(holder)) {\n            if (\n              holder.children.every((childHolder) =>\n                helperFunc(childHolder, false)\n              )\n            ) {\n              return true\n            } else {\n              return holder.children.every((childHolder) =>\n                helperFunc(childHolder, addToList)\n              )\n            }\n          } else if (isNoneOf(holder)) {\n            if (\n              holder.children.some((childHolder) =>\n                helperFunc(childHolder, false)\n              )\n            ) {\n              return false\n            } else {\n              return !holder.children.some((childHolder) =>\n                helperFunc(childHolder, addToList)\n              )\n            }\n          } else if (isConditionalIf(holder)) {\n            if (helperFunc(holder.condition, false)) {\n              return holder.body.every((r) => helperFunc(r))\n            } else {\n              return true\n            }\n          } else if (isAnyOf(holder)) {\n            if (holder.children.some((c) => helperFunc(c, false))) {\n              return true\n            } else {\n              return holder.children.some((child) =>\n                helperFunc(child, addToList)\n              )\n            }\n          } else if (isOpt(holder)) {\n            const fullfilled = this.hasOption(holder.tenantOption)\n            if (fullfilled) return true\n            else {\n              if (addToList) {\n                notFulfilled.push(holder)\n              }\n              return false\n            }\n          } else return false\n        }\n        return false\n      }\n\n      helperFunc(originalHolder)\n\n      return Array.of(\n        ...new Set(notFulfilled.map((holder) => holder.tenantOption))\n      )\n    },\n\n    hasOption(option: string): boolean {\n      if (!this.tenantData) return false\n      if (!this.tenantData.options) return false\n      if (!Util.isNonEmptyArray(this?.tenantData?.options)) return false\n      return this.tenantData.options.includes(option)\n    },\n\n    assistantCanBeAdded(definition: AssistantDefinition): boolean {\n      const groups = this.getGroups(definition)\n      const singleChoices: TenantOptionRuleGroup[] = groups\n        .filter((g: TenantOptionRuleGroup) => !g.allowMultiple)\n\n      if (Util.isNonEmptyArray(singleChoices)) {\n        return singleChoices.every((s) => {\n          const lists = Object.values(s.children)\n\n          return (\n            lists.filter((l) => l.every((lo) => this.hasOption(lo))).length <\n            2\n          )\n        })\n      }\n\n      return true\n    },\n\n    getAssistantName(code: string | undefined): string {\n      return _(\"assistant_\" + code)\n    },\n\n    optsMissing(): string {\n      const htmlText = \"<div></div>\"\n      const holders: Array<TenantOptionRule>[] = (this.tenantData?.assistants || [])\n        .map((a: Assistant) => this.getAssistantDefinition((a.code as string)))\n        .filter((a: AssistantDefinition | undefined) => a !== undefined)\n        .map((a: AssistantDefinition) => a.requiredOptions)\n\n      const missingOpts: string[] = holders.reduce(\n        (a: string[], b: TenantOptionRule[]) => a.concat(this.doesNotFulfillOptions(b)),\n        ([] as string[])\n      )\n\n      if (Util.isNonEmptyArray(missingOpts)) {\n        const result = missingOpts.map((l, i) => {\n          if (i < missingOpts.length - 1) {\n            return `\n                <div>\n                  <div class=\"opts\">\n                    ${l}\n                  </div>\n                  <span class=\"or\">${_(\"OR\")}</span>\n                </div>\n              `\n          } else {\n            return `\n                <div>\n                  <div class=\"opts\">\n                    ${l}\n                  </div>\n                </div>\n              `\n          }\n        })\n        return result.join(\"\")\n      }\n\n      return htmlText\n    },\n\n    optsPreventingAssistantFromBeingAdded(definition: AssistantDefinition): string {\n      const groups = this.getGroups(definition)\n      const singleChoices = groups.filter((g) => !g.allowMultiple)\n\n      const htmlText = \"<div></div>\"\n\n      if (Util.isNonEmptyArray(singleChoices)) {\n        for (let s of singleChoices) {\n          const lists = Object.values(s.children)\n\n          const fullfilled = lists.filter((l) =>\n            l.every((lo) => this.hasOption(lo))\n          )\n\n          if (fullfilled.length > 1) {\n            const result = fullfilled.map((l, i) => {\n              if (i < fullfilled.length - 1) {\n                return `\n                <div>\n                  <div class=\"opts\">\n                    ${l.join(\", \")}\n                  </div>\n                  <span class=\"or\">${_(\"OR\")}</span>\n                </div>\n              `\n              } else {\n                return `\n                <div>\n                  <div class=\"opts\">\n                    ${l.join(\", \")}\n                  </div>\n                </div>\n              `\n              }\n            })\n            return result.join(\"\")\n          }\n        }\n      }\n\n      return htmlText\n    },\n\n    createTenant() {\n      this.fetchTemplates()\n      let options = new SortOptions(this.tenantOptions)\n      this.perms = options.sortOptions()\n      this.command = Command.create\n      this.tenantData = {\n        active: true,\n        defaultLanguage: Reseller.language(),\n        tenantTemplate: {},\n        connectorOptions: {\n          perConnector: {},\n        },\n        defaultCountry: Reseller.country(),\n        defaultTimeZone: Reseller.timeZone(),\n      }\n      this.openBaseDialog()\n\n      if (!this.hasUiTenantDetailedPerm && !this.hasTenantTemplateViewPerm) {\n        this.selectedMode = Mode.default\n      }\n\n      if (this.isTemplate) {\n        this.selectedMode = Mode.detailed\n        this.tenantSize = DefaultTenantSizeCost\n      }\n    },\n\n    editTenant(codeName: string) {\n      let options = new SortOptions(this.tenantOptions)\n      this.perms = options.sortOptions()\n      this.command = Command.edit\n      this.loading = true\n      this.tenantData = {}\n      Tenant.getTenantByCodeName(codeName).then((data) => {\n        const copy: TenantPayload = data\n        if (!copy.tenantTemplate) {\n          copy.tenantTemplate = {}\n        }\n\n        this.tenantData = copy\n        this.openBaseDialog()\n        this.loading = false\n\n        // @ts-ignore\n        this.$nextTick(() => this.$refs.form?.validate())\n\n        const withAssistants = this.tenantData && this.tenantData.assistants &&\n          Util.isNonEmptyArray(this.tenantData.assistants)\n\n        if (this.hasUiTenantDetailedPerm) {\n          this.selectedMode = withAssistants\n            ? Mode.default\n            : Mode.detailed\n        } else {\n          this.selectedMode = Mode.default\n        }\n      })\n    },\n\n    async createTemplateFromTenantSetup(tenantData: TenantPayload,\n      name: string) {\n      const codeValue = name.replace(/[^a-zA-Z]/g, \"\")\n\n      const newTemplate: TenantTemplateType = {\n        ...(tenantData || {}),\n        code: codeValue,\n        name: name,\n      }\n\n      if (!Util.isSet(newTemplate.defaultLanguage)) {\n        newTemplate.defaultLanguage = Reseller.language()\n      }\n\n      if (!Util.isSet(newTemplate.defaultCountry)) {\n        newTemplate.defaultCountry = Reseller.country()\n      }\n\n      if (!Util.isSet(newTemplate.defaultTimeZone)) {\n        newTemplate.defaultTimeZone = Reseller.timeZone()\n      }\n\n      TenantTemplate.createTenantTemplate(newTemplate)\n        .then(() => {\n          this.$emit(\"tenant-template-saved\")\n          this.close()\n          this.closeBaseDialog()\n\n          // @ts-ignore actionmixin\n          this.openSuccessDialog()\n        })\n        // @ts-ignore Scala promise\n        .catch((err: string) => {\n          // @ts-ignore actionmixin\n          this.openErrorDialog(err)\n        })\n    },\n\n    createTemplate() {\n      this.$emit(\"open-tenant-template-dialog\")\n      this.close()\n    },\n\n    editTenantTemplate(localId: string) {\n      const options = new SortOptions(this.tenantOptions)\n      this.perms = options.sortOptions()\n      this.command = Command.edit\n      this.selectedMode = Mode.detailed\n      this.loading = true\n      this.tenantData = {}\n      this.tenantSize = DefaultTenantSizeCost\n      TenantTemplate.getTenantTemplate(localId).then((data: TenantTemplateType) => {\n        this.tenantData = data\n        this.openBaseDialog()\n        this.loading = false\n\n        if (Util.isSet(this.tenantData.shardCost)) {\n          if (this.tenantSizes.some(ts => ts.value === this.tenantData.shardCost)) {\n            this.tenantSize = this.tenantData.shardCost\n          } else {\n            this.tenantSize = null\n            this.customShardCost = this.tenantData.shardCost\n          }\n        }\n      })\n    },\n\n    async saveTenant() {\n      // @ts-ignore\n      let valid = new Validation(this.$refs.form)\n      if (valid.hasErrors()) {\n        // @ts-ignore actionmixin\n        this.openErrorDialog(valid.getErrors())\n        return\n      }\n\n      // @ts-ignore refs\n      const result = await this.$refs.tenantCreateConfirmDialog.open({\n        title: this.isCreate ?\n          Locale.translate(\"Save_tenant_title_create\") :\n          Locale.translate(\"Save_tenant_title_edit\"),\n        description: this.isCreate ?\n          Locale.translate(\"Save_tenant_confirm\") :\n          Locale.translate(\"Save_tenant_confirm_save\"),\n        confirmText: this.isCreate ?\n          Locale.translate(\"Create\") :\n          Locale.translate(\"Save\"),\n      })\n\n      if (result.result) {\n        const tenantData = (this.tenantData as TenantPayload)\n        tenantData.cmd = (this.command as string)\n        Tenant\n          .saveTenant(tenantData)\n          .then((data) => {\n            this.$emit(\"tenant-saved\", data)\n\n            if (Util.isSet(result.saveAsTemplateName)) {\n              this.createTemplateFromTenantSetup(this.tenantData,\n                result.saveAsTemplateName)\n            } else {\n              this.close()\n              this.closeBaseDialog()\n              // @ts-ignore actionmixin\n              this.openSuccessDialog(_(\"Tenant_saved\"))\n            }\n          })\n          // @ts-ignore Scala promise\n          .fail((err: Error | string) => {\n            // @ts-ignore actionmixin\n            this.openErrorDialog(err)\n          })\n      }\n    },\n\n    async saveTenantTemplate() {\n      // @ts-ignore refs\n      let valid = new Validation(this.$refs.form)\n      if (valid.hasErrors()) {\n        // @ts-ignore actionmixin\n        this.openErrorDialog(valid.getErrors())\n        return\n      }\n\n      // @ts-ignore actionmixin\n      const result = await this.openConfirmDialog({\n        title: _(\"Save_tenant_template\"),\n        description: _(\"Save_tenant_template_confirm\"),\n      })\n\n      if (result) {\n        const tenantData = (this.tenantData as TenantTemplatePayload)\n        if (Util.isSet(this.customShardCost) || Util.isSet(this.tenantSize)) {\n          tenantData.shardCost = (this.customShardCost || this.tenantSize as number)\n        }\n        else {\n          tenantData.shardCost = DefaultTenantSizeCost\n        }\n\n        tenantData.cmd = (this.command as string)\n        const fut = (): Promise<SuccessResponse | FailureResponse> => {\n          if (this.isCreate)\n            return TenantTemplate.createTenantTemplate(tenantData)\n          else return TenantTemplate.editTenantTemplate(tenantData)\n        }\n\n        fut()\n          .then((data) => {\n            if (data.OK) {\n              this.$emit(\"tenant-template-saved\", data)\n              this.close()\n              this.closeBaseDialog()\n              // @ts-ignore actionmixin\n              this.openSuccessDialog()\n            }\n            else {\n              // @ts-ignore actionmixin\n              this.openErrorDialog(data.err)\n            }\n          })\n          .catch((err) => {\n            // @ts-ignore actionmixin\n            this.openErrorDialog(err)\n          })\n      }\n    },\n\n    close() {\n      this.resetValues()\n    },\n\n    resetValues() {\n      this.loading = false\n      this.selectedMode = Mode.welcome\n      this.command = Command.create\n      this.tenantData = {}\n      this.perms = {}\n    },\n\n    updateTenantDataSalesFlow(newTenantData: SalesFlowTenant) {\n      this.updateOptions(newTenantData.newOptions, false)\n      this.$set(this.tenantData, \"assistants\", newTenantData.assistants)\n    },\n\n    fetchTemplates() {\n      if (this.hasTenantTemplateViewPerm) {\n        TenantTemplate.listTenantTemplates().then(\n          (list) => (this.templates = list)\n        )\n      }\n    },\n\n    getGroups(assistantDef: AssistantDefinition | undefined): TenantOptionRuleGroup[] {\n      if (!assistantDef) return []\n\n      return AssistantUtils\n        .getGroups(assistantDef, Reseller.allowableTenantOptions(), ((this.tenantData.options || []) as string[]))\n    },\n\n    changeGroupSelection(group: TenantOptionRuleGroup, system: string) {\n      const newOpts = TenantEditDialogUtils\n        .changeGroupSelection(group, system, ((this.tenantData.options || []) as string[]))\n\n      this.updateOptions(newOpts, false)\n    },\n\n    addOptsOrRemove(opts: string[]) {\n      const newOptions = TenantEditDialogUtils\n        .addOptsOrRemove(opts, ((this.tenantData.options || []) as string[]))\n      this.updateOptions(newOptions, false)\n    },\n\n    updateOptions(optList: string[], add: boolean = false) {\n      if (Array.isArray(optList)) {\n        if (!Util.isNonEmptyArray(this.tenantData?.options)) {\n          this.$set(this.tenantData, \"options\", [])\n        }\n\n        if (add) {\n          const options = ((this.tenantData.options || []) as string[])\n\n          const newList = Array.of(\n            ...new Set(options.concat(optList))\n          )\n          this.$set(this.tenantData, \"options\", newList)\n        } else {\n          const newList = Array.of(...new Set(optList))\n          this.$set(this.tenantData, \"options\", newList)\n        }\n      }\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n\n    isNonEmptyArray(arr: any): boolean {\n      return Util.isNonEmptyArray(arr)\n    },\n\n    notEmptyObject(obj: any): boolean {\n      return Util.notEmptyObject(obj)\n    },\n\n    setDefault() {\n      this.selectedMode = Mode.default\n    },\n\n    setDetailed() {\n      this.selectedMode = Mode.detailed\n    },\n\n    isSet(v: any): boolean {\n      return Util.isSet(v)\n    },\n\n    addComment(index: number, comment: string) {\n      if (!this.tenantData) return\n      if (!this.tenantData.assistants) return\n\n      const assistant = this.tenantData.assistants[index]\n\n      if (assistant) {\n        (this.tenantData.assistants[index] as Assistant).comments = comment\n      }\n    },\n\n    getAssistantParameters(code: string | undefined): Record<string, AssistantParameter> {\n      const def = this.getAssistantDefinition(code)\n\n      if (def) {\n        return def.parameters\n      }\n\n      return {}\n    },\n\n    changeParameterValue(ass: Assistant, fieldName: string, val: string | undefined) {\n      if (ass.parameters && val) {\n        ass.parameters[fieldName] = val\n      }\n    },\n\n    translateChannel(value: string): string {\n      switch (value) {\n        case \"fortnox\":\n          return Locale.translate(\"channelfortnoxmarketplace\")\n        case \"fortnoxembedded\":\n          return Locale.translate(\"fortnoxembedded\")\n        default:\n          return Locale.translate(value)\n      }\n    },\n\n    translateParameterValue(fieldName: string, value: string): string {\n      switch (fieldName) {\n        case \"channel\": return this.translateChannel(value)\n\n        default:\n          return Locale.translate(value)\n      }\n    },\n  },\n})\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!./tenant-edit-dialog.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!./tenant-edit-dialog.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./TenantEditDialog.vue?vue&type=template&id=79371d96\"\nimport script from \"@/components/tenant-edit-dialog/tenant-edit-dialog.ts?vue&type=script&lang=ts&external\"\nexport * from \"@/components/tenant-edit-dialog/tenant-edit-dialog.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./TenantEditDialog.vue?vue&type=style&index=0&id=79371d96&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","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport {\n  TenantEditDialog,\n} from \"@/components\"\n\nexport default defineComponent({\n  name: \"TenantTemplateDialog\",\n\n  components: {\n    TenantEditDialog,\n  },\n\n  methods: {\n    createTenantTemplate() {\n      if (this.$refs.tenantDialog) {\n        // @ts-ignore\n        this.$refs.tenantDialog.createTenant()\n      }\n    },\n\n    editTenantTemplate(localId: string) {\n      if (this.$refs.tenantDialog) {\n        // @ts-ignore\n        this.$refs.tenantDialog.editTenantTemplate(localId)\n      }\n    },\n  },\n})\n</script>\n<template>\n  <div>\n    <TenantEditDialog\n      @tenant-template-saved=\"$emit('reload')\"\n      @open-tenant-template-dialog=\"createTenantTemplate()\"\n      is-template\n      ref=\"tenantDialog\"\n    >\n    </TenantEditDialog>\n  </div>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TenantTemplateDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./TenantTemplateDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./TenantTemplateDialog.vue?vue&type=template&id=2c30176f&scoped=true\"\nimport script from \"./TenantTemplateDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./TenantTemplateDialog.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  \"2c30176f\",\n  null\n  \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('TenantEditDialog',{ref:\"tenantDialog\",attrs:{\"is-template\":\"\"},on:{\"tenant-template-saved\":function($event){return _vm.$emit('reload')},\"open-tenant-template-dialog\":function($event){return _vm.createTenantTemplate()}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport Locale from \"@/modules/utils/locales\"\nimport SortOptions, { SortOptionsType } from \"@/modules/utils/sort-options\"\n\nimport {\n  DefaultValidators,\n  Validation,\n  DefaultValidatorsType,\n} from \"@/modules/utils/validators\"\n\nimport { _ } from \"@/modules/utils/localehelpers\"\n\nimport {\n  TenantUser as TenantUserType,\n  RuleCallback,\n} from \"@/types\"\n\nimport ResellerUser from \"@/modules/injected-js-handlers/reseller-user\"\n\nimport {\n  UserPermsAndAntiList,\n  CoreSelect,\n} from \"@/components\"\n\ninterface Response {\n  success: boolean\n  msg?: string\n}\n\ninterface State {\n  codeName: string | null,\n  loading: boolean,\n  editUserDlg: boolean,\n  userData: TenantUserType,\n  command: \"create\" | \"edit\"\n  userPermissions: string[],\n  DefaultValidators: DefaultValidatorsType,\n  perms: Record<string, string[]>,\n  sortOptions: SortOptionsType,\n\n  pwd2: string | undefined\n}\n\nexport default defineComponent({\n  name: \"UserEditDialog\",\n\n  components: {\n    UserPermsAndAntiList,\n    CoreSelect,\n  },\n\n  data(): State {\n    return {\n      codeName: null,\n      loading: true,\n      editUserDlg: false,\n      userData: {},\n      command: \"create\",\n      /* Put superuser in the top */\n      userPermissions: window.__user_perms.sort((a, b) => {\n        if (a === \"superuser\") return -1\n        if (b === \"superuser\") return 1\n        return 0\n      }),\n      DefaultValidators: DefaultValidators,\n      sortOptions: new SortOptions([]),\n      perms: {},\n\n      pwd2: undefined,\n    }\n  },\n\n  computed: {\n    languages() {\n      return Locale.allLanguages()\n        .map(lang => ({\n          text: lang.name,\n          value: lang.code3,\n        }))\n    },\n\n    pwdRules(): RuleCallback[] {\n      return [ DefaultValidators.requiredOnCreate(this.command === \"create\") ]\n    },\n\n    pwd2Rules(): RuleCallback[] {\n      return [\n        DefaultValidators.requiredOnCreate(this.command === \"create\"),\n        DefaultValidators.passWordMatch(this.userData.pwd, this.pwd2),\n      ]\n    },\n  },\n\n  methods: {\n    createUser(codeName: string) {\n      let options = new SortOptions(this.userPermissions)\n      this.perms = options.sortOptions()\n      this.codeName = codeName\n      this.command = \"create\"\n      this.userData = {\n        permissions: [],\n        antiPermissions: [],\n        defaultLanguage: ResellerUser.language() || \"eng\",\n      }\n      this.editUserDlg = true\n    },\n\n    editUser(codeName: string, login: string) {\n      let options = new SortOptions(this.userPermissions)\n      this.pwd2 = undefined\n      this.perms = options.sortOptions()\n      this.codeName = codeName\n      this.command = \"edit\"\n      this.userData = {}\n      let r = {\n        codeName: this.codeName,\n        login: login,\n      }\n      window.tenantServerFuncs.getUser(r).then((data: TenantUserType) => {\n        this.$set(this, \"userData\", data)\n        if (!this.userData.permissions) {\n          this.userData.permissions = []\n        }\n        if (!this.userData.antiPermissions) {\n          this.userData.antiPermissions = []\n        }\n        this.editUserDlg = true\n        this.loading = false\n      })\n    },\n\n    async saveUser() {\n      const el = this.$refs.form\n\n      if (el) {\n        const element = (el as HTMLFormElement)\n\n        let valid = new Validation(element)\n        if (valid.hasErrors()) {\n          // @ts-ignore\n          this.openErrorDialog(valid.getErrors())\n          return\n        }\n\n        interface TenantUserDataPayload extends TenantUserType {\n          cmd: \"create\" | \"edit\",\n          pwd2?: string | undefined,\n          codeName: string | null,\n        }\n\n        const payload: TenantUserDataPayload = {\n          ...this.userData,\n          cmd: this.command,\n          codeName: this.codeName,\n          pwd2: this.pwd2,\n        }\n\n        // @ts-ignore\n        const result = await this.openConfirmDialog({\n          title: _(\"Save_user_settings\"),\n          description: _(\"Save_user_settings_confirm\"),\n        })\n\n        if (result) {\n          window.tenantServerFuncs\n            .saveUser(payload)\n            .then((data: Response) => {\n              if (data.success) {\n                this.$emit(\"user-saved\")\n                // @ts-ignore\n                this.openSuccessDialog(_(\"User_saved\"))\n                this.close()\n              } else {\n                // @ts-ignore\n                this.openErrorDialog(data.msg)\n              }\n            })\n            .fail((err: Error) => {\n              // @ts-ignore\n              this.openErrorDialog(err)\n            })\n        }\n      }\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n\n    close() {\n      this.editUserDlg = false\n      this.codeName = null\n      this.loading = false\n      this.editUserDlg = false\n      this.userData = {}\n      this.command = \"create\"\n      this.perms = {}\n    },\n\n    async mailUser() {\n      const sendMailTitle = _(\"Send_email\")\n      const sendAccountInfoText = _(\"Send_account_info_text\")\n      const successText = _(\"Mail_success\")\n\n      // @ts-ignore\n      const result = await this.openConfirmDialog({\n        title: sendMailTitle,\n        description: sendAccountInfoText,\n      })\n\n      if (result) {\n        window.userMailerServerFuncs\n          .mailUser({\n            tenant: this.codeName,\n            login: this.userData.login,\n          })\n          .then((res: Response) => {\n            // @ts-ignore\n            if (res.success) this.openSuccessDialog(null, successText)\n            // @ts-ignore\n            else this.openErrorDialog(res.msg)\n          })\n          // @ts-ignore\n          .catch((err: Error) => this.openErrorDialog(err))\n      }\n    },\n  },\n})\n</script>\n<template>\n  <div>\n    <!-- user edit dlg -->\n    <VDialog\n      v-model=\"editUserDlg\"\n      @keydown.esc=\"editUserDlg = false\"\n      scrollable\n      max-width=\"700px\"\n      content-class=\"dialog-wrapper\"\n    >\n      <template #activator=\"{ on }\">\n        <slot v-on=\"on\"></slot>\n      </template>\n      <VCard\n        data-test-id=\"tenant-user-dialog\"\n        class=\"edit-user\"\n      >\n        <div>\n          <div class=\"d-flex align-center px-2\">\n            <VCardTitle class=\"headline\">\n              {{ _(\"User\") }}\n            </VCardTitle>\n            <VSpacer></VSpacer>\n            <div class=\"d-flex gap-3\">\n              <VMenu\n                v-if=\"command !== 'create'\"\n                offset-y\n              >\n                <template #activator=\"{ on, attrs }\">\n                  <VBtn\n                    v-on=\"on\"\n                    v-bind=\"attrs\"\n                    depressed\n                    color=\"grey--text\"\n                    class=\"btn-more\"\n                  >\n                    <FontAwesomeIcon icon=\"far fa-paper-plane\">\n                    </FontAwesomeIcon>\n                  </VBtn>\n                </template>\n                <VList>\n                  <VListItem\n                    @click=\"mailUser\"\n                    dense\n                  >\n                    {{ _(\"Send_account_info\") }}\n                  </VListItem>\n                </VList>\n              </VMenu>\n\n              <VBtn\n                @click=\"close()\"\n                depressed\n                color=\"grey--text\"\n                data-test-id=\"cancel-button\"\n              >\n                {{ _(\"Cancel\") }}\n              </VBtn>\n              <VBtn\n                @click=\"saveUser()\"\n                depressed\n                color=\"primary\"\n                class=\"bg-primary\"\n                data-test-id=\"save-button\"\n              >\n                {{ _(\"Save\") }}\n              </VBtn>\n            </div>\n          </div>\n        </div>\n\n        <VLayout\n          justify-center\n          class=\"dialog-content\"\n        >\n          <VCardText>\n            <VForm\n              @submit.prevent=\"saveUser()\"\n              ref=\"form\"\n            >\n              <VRow class=\"mt-2 mb-0 py-0\">\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <VTextField\n                    v-model=\"userData.login\"\n                    :readonly=\"command != 'create'\"\n                    :rules=\"[\n                      DefaultValidators.minLength(3),\n                      DefaultValidators.correctLoginFormat(),\n                    ]\"\n                    :label=\"_('Username')\"\n                    outlined\n                    data-test-id=\"login-text-field\"\n                  >\n                  </VTextField>\n                </VCol>\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <VTextField\n                    v-model=\"userData.fullName\"\n                    :label=\"_('Name')\"\n                    outlined\n                    data-test-id=\"full-name-text-field\"\n                  >\n                  </VTextField>\n                </VCol>\n              </VRow>\n\n              <VRow class=\"my-0 py-0\">\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <VTextField\n                    v-model=\"userData.email\"\n                    :label=\"_('Email')\"\n                    :rules=\"[DefaultValidators.isEmail]\"\n                    outlined\n                    type=\"email\"\n                    data-test-id=\"email-text-field\"\n                  >\n                  </VTextField>\n                </VCol>\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <CoreSelect\n                    :value=\"userData.defaultLanguage\"\n                    :label=\"_('Language')\"\n                    :items=\"languages\"\n                    :rules=\"[DefaultValidators.required]\"\n                    @change=\"userData.defaultLanguage = $event\"\n                    outlined\n                    data-test-id=\"language-select\"\n                  >\n                  </CoreSelect>\n                </VCol>\n              </VRow>\n\n              <VRow class=\"my-0 py-0\">\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <VTextField\n                    v-model=\"userData.pwd\"\n                    :label=\"_('Password')\"\n                    :rules=\"pwdRules\"\n                    outlined\n                    data-test-id=\"password\"\n                    type=\"password\"\n                  >\n                  </VTextField>\n                </VCol>\n                <VCol\n                  :cols=\"6\"\n                  class=\"my-0 py-0\"\n                >\n                  <VTextField\n                    v-model=\"pwd2\"\n                    :label=\"_('Password_confirmation')\"\n                    :rules=\"pwd2Rules\"\n                    outlined\n                    type=\"password\"\n                    data-test-id=\"confirm-password\"\n                  >\n                  </VTextField>\n                </VCol>\n              </VRow>\n\n              <UserPermsAndAntiList\n                v-if=\"userData && userPermissions\"\n                :user=\"userData\"\n                :available-permissions=\"userPermissions\"\n                @change=\"\n                  userData.permissions = $event.permissions\n                  userData.antiPermissions = $event.antiPermissions\n                \"\n              >\n              </UserPermsAndAntiList>\n            </VForm>\n          </VCardText>\n        </VLayout>\n      </VCard>\n    </VDialog>\n  </div>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserEditDialog.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserEditDialog.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserEditDialog.vue?vue&type=template&id=94ad9406&scoped=true\"\nimport script from \"./UserEditDialog.vue?vue&type=script&lang=ts\"\nexport * from \"./UserEditDialog.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  \"94ad9406\",\n  null\n  \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c(VDialog,{attrs:{\"scrollable\":\"\",\"max-width\":\"700px\",\"content-class\":\"dialog-wrapper\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;_vm.editUserDlg = false}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_vm._t(\"default\")]}}],null,true),model:{value:(_vm.editUserDlg),callback:function ($$v) {_vm.editUserDlg=$$v},expression:\"editUserDlg\"}},[_vm._v(\" \"),_c(VCard,{staticClass:\"edit-user\",attrs:{\"data-test-id\":\"tenant-user-dialog\"}},[_c('div',[_c('div',{staticClass:\"d-flex align-center px-2\"},[_c(VCardTitle,{staticClass:\"headline\"},[_vm._v(\"\\n            \"+_vm._s(_vm._(\"User\"))+\"\\n          \")]),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('div',{staticClass:\"d-flex gap-3\"},[(_vm.command !== 'create')?_c(VMenu,{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c(VBtn,_vm._g(_vm._b({staticClass:\"btn-more\",attrs:{\"depressed\":\"\",\"color\":\"grey--text\"}},'VBtn',attrs,false),on),[_c('FontAwesomeIcon',{attrs:{\"icon\":\"far fa-paper-plane\"}})],1)]}}],null,false,2855730883)},[_vm._v(\" \"),_c(VList,[_c(VListItem,{attrs:{\"dense\":\"\"},on:{\"click\":_vm.mailUser}},[_vm._v(\"\\n                  \"+_vm._s(_vm._(\"Send_account_info\"))+\"\\n                \")])],1)],1):_vm._e(),_vm._v(\" \"),_c(VBtn,{attrs:{\"depressed\":\"\",\"color\":\"grey--text\",\"data-test-id\":\"cancel-button\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\"\\n              \"+_vm._s(_vm._(\"Cancel\"))+\"\\n            \")]),_vm._v(\" \"),_c(VBtn,{staticClass:\"bg-primary\",attrs:{\"depressed\":\"\",\"color\":\"primary\",\"data-test-id\":\"save-button\"},on:{\"click\":function($event){return _vm.saveUser()}}},[_vm._v(\"\\n              \"+_vm._s(_vm._(\"Save\"))+\"\\n            \")])],1)],1)]),_vm._v(\" \"),_c(VLayout,{staticClass:\"dialog-content\",attrs:{\"justify-center\":\"\"}},[_c(VCardText,[_c(VForm,{ref:\"form\",on:{\"submit\":function($event){$event.preventDefault();return _vm.saveUser()}}},[_c(VRow,{staticClass:\"mt-2 mb-0 py-0\"},[_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c(VTextField,{attrs:{\"readonly\":_vm.command != 'create',\"rules\":[\n                    _vm.DefaultValidators.minLength(3),\n                    _vm.DefaultValidators.correctLoginFormat(),\n                  ],\"label\":_vm._('Username'),\"outlined\":\"\",\"data-test-id\":\"login-text-field\"},model:{value:(_vm.userData.login),callback:function ($$v) {_vm.$set(_vm.userData, \"login\", $$v)},expression:\"userData.login\"}})],1),_vm._v(\" \"),_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c(VTextField,{attrs:{\"label\":_vm._('Name'),\"outlined\":\"\",\"data-test-id\":\"full-name-text-field\"},model:{value:(_vm.userData.fullName),callback:function ($$v) {_vm.$set(_vm.userData, \"fullName\", $$v)},expression:\"userData.fullName\"}})],1)],1),_vm._v(\" \"),_c(VRow,{staticClass:\"my-0 py-0\"},[_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c(VTextField,{attrs:{\"label\":_vm._('Email'),\"rules\":[_vm.DefaultValidators.isEmail],\"outlined\":\"\",\"type\":\"email\",\"data-test-id\":\"email-text-field\"},model:{value:(_vm.userData.email),callback:function ($$v) {_vm.$set(_vm.userData, \"email\", $$v)},expression:\"userData.email\"}})],1),_vm._v(\" \"),_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c('CoreSelect',{attrs:{\"value\":_vm.userData.defaultLanguage,\"label\":_vm._('Language'),\"items\":_vm.languages,\"rules\":[_vm.DefaultValidators.required],\"outlined\":\"\",\"data-test-id\":\"language-select\"},on:{\"change\":function($event){_vm.userData.defaultLanguage = $event}}})],1)],1),_vm._v(\" \"),_c(VRow,{staticClass:\"my-0 py-0\"},[_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c(VTextField,{attrs:{\"label\":_vm._('Password'),\"rules\":_vm.pwdRules,\"outlined\":\"\",\"data-test-id\":\"password\",\"type\":\"password\"},model:{value:(_vm.userData.pwd),callback:function ($$v) {_vm.$set(_vm.userData, \"pwd\", $$v)},expression:\"userData.pwd\"}})],1),_vm._v(\" \"),_c(VCol,{staticClass:\"my-0 py-0\",attrs:{\"cols\":6}},[_c(VTextField,{attrs:{\"label\":_vm._('Password_confirmation'),\"rules\":_vm.pwd2Rules,\"outlined\":\"\",\"type\":\"password\",\"data-test-id\":\"confirm-password\"},model:{value:(_vm.pwd2),callback:function ($$v) {_vm.pwd2=$$v},expression:\"pwd2\"}})],1)],1),_vm._v(\" \"),(_vm.userData && _vm.userPermissions)?_c('UserPermsAndAntiList',{attrs:{\"user\":_vm.userData,\"available-permissions\":_vm.userPermissions},on:{\"change\":function($event){_vm.userData.permissions = $event.permissions\n                _vm.userData.antiPermissions = $event.antiPermissions}}}):_vm._e()],1)],1)],1)],1)],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('div',{staticClass:\"user-language-select-wrapper\"},[_c('PbSelect',{attrs:{\"value\":_vm.currentLanguage,\"items\":_vm.availableLanguages,\"custom-class\":\"user-language-select\"},on:{\"change\":_vm.changeLanguage},scopedSlots:_vm._u([{key:\"customselection\",fn:function({ props: { item } }){return [_c('div',{staticClass:\"d-flex gap-1\"},[_c('span',[_vm._v(\"\\n          \"+_vm._s(_vm.emojiCode(item.flagCode))+\"\\n        \")]),_vm._v(\" \"),(_vm.withText)?_c('span',{staticClass:\"label\"},[_vm._v(\"\\n          \"+_vm._s(item.text)+\"\\n        \")]):_vm._e()])]}}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport Country from \"@/modules/utils/country\"\n\nimport ResellerUser from \"@/modules/injected-js-handlers/reseller-user\"\n\nimport {\n  PbSelect,\n} from \"@/components\"\n\nexport default defineComponent({\n\n  components: {\n    PbSelect,\n  },\n\n  props: {\n    withText: Boolean,\n  },\n\n  data() {\n    return {\n      availableLanguages: [\n        {\n          text: \"English\",\n          value: \"eng\",\n          flagCode: \"GBR\",\n        },\n        {\n          text: \"Svenska\",\n          value: \"swe\",\n          flagCode: \"SWE\",\n        },\n      ],\n    }\n  },\n\n  computed: {\n    validLanguages() {\n      return this.availableLanguages.map((obj) => obj.value)\n    },\n\n    currentLanguage(): string {\n      const language = ResellerUser.language()\n\n      if (language) {\n        if (this.validLanguages.includes(language)) {\n          return language\n        }\n        else return \"eng\"\n      }\n      else return \"eng\"\n    },\n  },\n\n  methods: {\n    async changeLanguage(language: string) {\n      if (!this.validLanguages.includes(language)) return\n\n      await window.sessionServerFuncs.changeLanguage(language)\n\n      window.location.reload()\n    },\n\n    emojiCode(country: string) {\n      return Country.convertCountryToUnicodeFlag(country)\n    },\n  },\n})\n</script>\n<template>\n  <div class=\"user-language-select-wrapper\">\n    <PbSelect\n      :value=\"currentLanguage\"\n      :items=\"availableLanguages\"\n      @change=\"changeLanguage\"\n      custom-class=\"user-language-select\"\n    >\n      <template #customselection=\"{ props: { item } }\">\n        <div class=\"d-flex gap-1\">\n          <span>\n            {{ emojiCode(item.flagCode) }}\n          </span>\n          <span\n            v-if=\"withText\"\n            class=\"label\"\n          >\n            {{ item.text }}\n          </span>\n        </div>\n      </template>\n    </PbSelect>\n  </div>\n</template>\n<style scoped lang=\"scss\"></style>\n","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserLangSelect.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserLangSelect.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./UserLangSelect.vue?vue&type=template&id=5735141e&scoped=true\"\nimport script from \"./UserLangSelect.vue?vue&type=script&lang=ts\"\nexport * from \"./UserLangSelect.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  \"5735141e\",\n  null\n  \n)\n\nexport default component.exports","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nexport default defineComponent({\n  props: {\n    title: String,\n\n    description: String,\n  },\n})\n</script>\n<template>\n  <div class=\"page-404 align-center justify-center\">\n    <div class=\"content-404\">\n      <img\n        src=\"/public/assets/images/404.png\"\n        class=\"image-404\"\n      />\n      <h3>\n        {{ title }}\n      </h3>\n      <p>{{ description }}</p>\n      <a\n        href=\"/\"\n        class=\"button-back\"\n      >\n        <span> Back to dashboard </span>\n      </a>\n    </div>\n  </div>\n</template>\n<style lang=\"scss\">\n  .page-404 {\n    .image-404 {\n      margin: 30px auto;\n      max-width: 320px;\n    }\n\n    .content-404 {\n      max-width: 560px;\n      text-align: center;\n      margin: 6% auto;\n    }\n\n    .button-back {\n      width: 100%;\n      color: var(--v-title-base);\n      border: 1px solid var(--v-border-base);\n      padding: 12px 40px;\n      text-transform: uppercase;\n      font-weight: 500;\n      border-radius: 3px;\n      text-decoration: none;\n    }\n\n    h3 {\n      font-size: 50px;\n      text-align: center;\n      margin: 30px auto 15px;\n    }\n\n    p {\n      font-size: 18px;\n      font-weight: 400;\n      text-align: center;\n      margin-bottom: 45px;\n      color: var(--v-byline-base);\n    }\n\n    .exception-box {\n      background: white;\n      padding: 20px;\n      border: 1px solid var(--v-border-base);\n      border-radius: 20px;\n      text-align: start;\n      width: 50%;\n      min-width: min-content;\n      margin: 0 auto;\n      white-space: normal;\n    }\n  }\n</style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Error.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Error.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./Error.vue?vue&type=template&id=041a41b3\"\nimport script from \"./Error.vue?vue&type=script&lang=ts\"\nexport * from \"./Error.vue?vue&type=script&lang=ts\"\nimport style0 from \"./Error.vue?vue&type=style&index=0&id=041a41b3&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","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"page-404 align-center justify-center\"},[_c('div',{staticClass:\"content-404\"},[_c('img',{staticClass:\"image-404\",attrs:{\"src\":\"/public/assets/images/404.png\"}}),_vm._v(\" \"),_c('h3',[_vm._v(\"\\n      \"+_vm._s(_vm.title)+\"\\n    \")]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.description))]),_vm._v(\" \"),_vm._m(0)])])\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('a',{staticClass:\"button-back\",attrs:{\"href\":\"/\"}},[_c('span',[_vm._v(\" Back to dashboard \")])])\n}]\n\nexport { render, staticRenderFns }","<script lang=\"ts\">\nimport { defineComponent } from \"vue\"\n\nimport {\n  LoggedInContent,\n} from \"@/components\"\n\nexport default defineComponent({\n  components: {\n    LoggedInContent,\n  },\n\n  props: {\n    fluid: Boolean,\n  },\n})\n</script>\n<template>\n  <VApp>\n    <LoggedInContent ref=\"loggedin\">\n      <VContainer :fluid=\"fluid\">\n        <slot></slot>\n      </VContainer>\n    </LoggedInContent>\n  </VApp>\n</template>\n<style scoped lang=\"scss\">\n.container {\n  padding: 30px 40px;\n}\n</style>\n","import mod from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=1b059a6a&scoped=true\"\nimport script from \"./App.vue?vue&type=script&lang=ts\"\nexport * from \"./App.vue?vue&type=script&lang=ts\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=1b059a6a&prod&scoped=true&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  \"1b059a6a\",\n  null\n  \n)\n\nexport default component.exports","import { VApp } from 'vuetify/lib/components/VApp';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VApp,[_c('LoggedInContent',{ref:\"loggedin\"},[_c(VContainer,{attrs:{\"fluid\":_vm.fluid}},[_vm._t(\"default\")],2)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { defineComponent } from \"vue\"\nimport Util from \"@/modules/utils/util\"\nimport Reseller from \"@/modules/injected-js-handlers/reseller\"\nimport ResellerUser from \"@/modules/injected-js-handlers/reseller-user\"\n\nconst ControlMixin = defineComponent({\n  computed: {\n    isSuperUser(): boolean {\n      return ResellerUser.permissions().includes(\"superuser\")\n    },\n\n    hasTenantViewPerm(): boolean {\n      return this.hasPerm(\"tenant.view\")\n    },\n\n    hasTenantSetCostPerm(): boolean {\n      return this.hasPerm(\"tenant.create.setcost\")\n    },\n\n    hasTenantCreatePerm(): boolean {\n      return this.hasPerm(\"tenant.create\")\n    },\n\n    hasTenantEditPerm(): boolean {\n      return this.hasPerm(\"tenant.edit\")\n    },\n\n    hasTenantDeletePerm(): boolean {\n      return this.hasPerm(\"tenant.delete\")\n    },\n\n    hasTenantLoginAsPerm(): boolean {\n      return this.hasPerm(\"tenant.loginas\")\n    },\n\n    hasTenantLoginAsAnyUserPerm(): boolean {\n      return this.hasPerm(\"tenant.loginas.anyuser\")\n    },\n\n    hasTenantUserAdmPerm(): boolean {\n      return this.hasPerm(\"tenant.useradm\")\n    },\n\n    hasResellerUserViewPerm(): boolean {\n      return this.hasPerm(\"reselleruser.view\")\n    },\n\n    hasResellerUserCreatePerm(): boolean {\n      return this.hasPerm(\"reselleruser.create\")\n    },\n\n    hasResellerUserEditPerm(): boolean {\n      return this.hasPerm(\"reselleruser.edit\")\n    },\n\n    hasResellerUserDeletePerm(): boolean {\n      return this.hasPerm(\"reselleruser.delete\")\n    },\n\n    hasStatsPerm(): boolean {\n      return this.hasPerm(\"stats.view\")\n    },\n\n    hasConnectorCredentialsEditPerm(): boolean {\n      return this.hasPerm(\"connectorcredentials.edit\")\n    },\n\n    hasTenantTemplateViewPerm(): boolean {\n      return this.hasPerm(\"tenanttemplate.view\")\n    },\n\n    hasTenantTemplateCreatePerm(): boolean {\n      return this.hasPerm(\"tenanttemplate.create\")\n    },\n\n    hasTenantTemplateEditPerm(): boolean {\n      return this.hasPerm(\"tenanttemplate.edit\")\n    },\n\n    hasTenantTemplateDeletePerm(): boolean {\n      return this.hasPerm(\"tenanttemplate.delete\")\n    },\n\n    hasUiTenantDetailedPerm(): boolean {\n      return this.hasPerm(\"ui.tenant.detailed\")\n    },\n  },\n\n  methods: {\n    hasOption(opt: string): boolean {\n      return Reseller.hasAllowableTenantOption(opt)\n    },\n\n    hasPerm(perm: string): boolean {\n      if (this.isSuperUser) return true\n\n      return ResellerUser.permissions().includes(perm)\n    },\n\n    hasAnyPerm(perms: string[]): boolean {\n      if (!Util.isNonEmptyArray(perms)) return false\n\n      return perms.some(this.hasPerm)\n    },\n  },\n})\n\nexport default ControlMixin\n","import { defineComponent } from \"vue\"\n\nimport {\n  Reject,\n} from \"@/types\"\n\ninterface State {\n  promise: any,\n  resolve: any,\n  reject: Reject | null\n\n  title: string | null\n  description: string | null\n}\n\nconst actionDialogMixin = defineComponent({\n  data(): State {\n    return {\n      promise: null,\n      resolve: null,\n      reject: null,\n\n      title: null,\n      description: null,\n    }\n  },\n\n  methods: {\n    superOpen(title: string, description: string): void {\n      this.title = title\n      this.description = description\n\n      this.promise = new Promise((res: any, rej: Reject) => {\n        this.resolve = res\n        this.reject = rej\n      })\n    },\n\n    superReset(): void {\n      this.promise = null\n      this.resolve = null\n      this.reject = null\n\n      this.title = null\n      this.description = null\n    },\n  },\n})\n\nexport default actionDialogMixin\n","import VueHelper from \"@/modules/utils/vuehelper\"\nimport Vue from \"vue\"\n\ninterface Options {\n  title: string,\n  description: string,\n}\n\ninterface ConfirmOptions extends Options {\n  confirmText?: string\n}\n\ninterface DeleteOptions extends Options {\n  withoutConfirm: boolean\n}\n\nconst actionMixin = Vue.extend({\n  methods: {\n    _getThis(): any {\n      // Make sure that all objects are ready for check\n      // @ts-ignore\n      return this?.$root?.$refs?.head?.$refs?.app?.$refs?.loggedin\n    },\n\n    openErrorDialog(error: Error | string): Promise<void> {\n      return VueHelper\n        .waitForRender(this._getThis(), \"errorDialog\").then(\n          // @ts-ignore\n          (dialog) => dialog.open(error)\n        )\n    },\n\n    openConfirmDialog(options: ConfirmOptions): Promise<boolean> {\n      return VueHelper\n        .waitForRender(this._getThis(), \"confirmDialog\").then(\n          // @ts-ignore\n          (dialog) => dialog.open(options.title, options.description, options.confirmText)\n        )\n    },\n\n    openDeleteDialog(options: DeleteOptions): Promise<boolean> {\n      return VueHelper\n        .waitForRender(this._getThis(), \"deleteDialog\").then(\n          (dialog) => {\n            // @ts-ignore\n            return dialog.open(\n              options.title,\n              options.description,\n              options.withoutConfirm\n            )\n          }\n        )\n    },\n\n    openSuccessDialog(title: string, timeout: number): Promise<void> {\n      return VueHelper\n        .waitForRender(this._getThis(), \"successDialog\").then(\n          (dialog) => {\n            // @ts-ignore\n            return dialog.open(title, timeout)\n          }\n        )\n    },\n\n    openLoadingDialog(optionalTitle: string, estimatedProgress: number): Promise<void> {\n      return VueHelper\n        .waitForRender(this._getThis(), \"loadingDialog\").then(\n          (dialog) => {\n            // @ts-ignore\n            return dialog.open(optionalTitle, estimatedProgress)\n          }\n        )\n    },\n\n    closeLoadingDialog(): Promise<void> {\n      return VueHelper\n        .waitForRender(this._getThis(), \"loadingDialog\").then(\n          // @ts-ignore\n          (dialog) => dialog.close()\n        )\n    },\n\n    openInfoDialog(options: Options): Promise<void> {\n      return VueHelper.waitForRender(this._getThis(), \"infoDialog\")\n        // @ts-ignore\n        .then(dialog => dialog.open(options.title, options.description))\n    },\n  },\n})\n\nexport default actionMixin\n","import VueHelper from \"@/modules/utils/vuehelper\"\nimport { defineComponent } from \"vue\"\n\nconst dataTableServerSideMixin = defineComponent({\n  methods: {\n    reload() {\n      // @ts-ignore\n      this.getDataTable().then((table) => table.reload())\n    },\n\n    /* Helper for returning the vue component */\n    getDataTable() {\n      return new Promise((res) => {\n        // @ts-ignore\n        VueHelper.waitForRender(this, \"dataTableServerSide\", \"reload\").then(\n          (dialog) => res(dialog)\n        )\n      })\n    },\n\n    getDataTableQuery() {\n      return new Promise((res) => {\n        this.getDataTable().then((table) => {\n          // @ts-ignore\n          if (table.getQueryHandler()) {\n            // @ts-ignore\n            res(table.getQueryHandler().queryBuilder.getQuery())\n          }\n        })\n      })\n    },\n\n    getDataTableQueryHandler() {\n      return new Promise((res) => {\n        this.getDataTable().then((table) => {\n          // @ts-ignore\n          if (table.getQueryHandler()) {\n            // @ts-ignore\n            res(table.getQueryHandler())\n          }\n        })\n      })\n    },\n  },\n})\n\nexport default dataTableServerSideMixin\n","import { defineComponent } from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\n\ninterface State {\n  doubleClickHandler: ReturnType<typeof setTimeout> | undefined\n  clickedInTimeout: string | null\n}\n\nconst DoubleClickMixin = defineComponent({\n  props: {\n    editable: Boolean,\n  },\n\n  data(): State {\n    return {\n      doubleClickHandler: undefined,\n      clickedInTimeout: null,\n    }\n  },\n\n  methods: {\n    doDoubleClick(id: string, callback: () => void) {\n      if (!this.editable) {\n        /* Double clicked */\n        if (Util.isString(this.clickedInTimeout)) {\n          callback()\n        } else {\n          /* First time */\n          this.clickedInTimeout = id\n        }\n\n        /* Reset click after 350ms */\n        this.doubleClickHandler = setTimeout(() => {\n          this.clickedInTimeout = null\n          if (Util.isSet(this.doubleClickHandler)) {\n            clearTimeout(this.doubleClickHandler)\n          }\n        }, 350)\n      }\n    },\n  },\n})\n\nexport default DoubleClickMixin\n","import { defineComponent, PropType } from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\nimport { _ } from \"@/modules/utils/localehelpers\"\nimport {\n  RuleCallback,\n} from \"@/types\"\n\nconst SelectMixin = defineComponent({\n  props: {\n    required: Boolean,\n\n    multiple: Boolean,\n    badge: Boolean,\n    rules: Array as PropType<RuleCallback[]>,\n    value: null,\n  },\n\n  computed: {\n    inputRules() {\n      const rules = []\n\n      if (this.required) {\n        if (this.multiple) {\n          rules.push((arr: any) => Util.isNonEmptyArray(arr) || _(\"Required\"))\n        } else {\n          rules.push((v: any) => Util.isSet(v) || _(\"Required\"))\n        }\n      }\n\n      return rules\n    },\n\n    computedRules() {\n      if (Util.isNonEmptyArray(this.rules)) return this.rules\n      else return this.inputRules\n    },\n\n    shouldShowBadge() {\n      if (!this.badge) return false\n\n      if (this.multiple) return Util.isNonEmptyArray(this.value)\n\n      return Util.isSet(this.value)\n    },\n  },\n\n  methods: {\n    validateRules(v: any, rules: RuleCallback[]) {\n      const messages = []\n\n      for (let rule of rules) {\n        if (typeof rule(v) === \"string\") {\n          messages.push(rule(v))\n        }\n      }\n\n      return messages?.length === 0\n    },\n  },\n})\n\nexport default SelectMixin\n","import Vue from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\nimport Locale from \"@/modules/utils/locales\"\n\nexport default Vue.extend({\n  filters: {\n    dateTimeFormat(val: string | undefined): string | undefined {\n      if (Util.isSet(val)) {\n        return Locale.dateTimeFormat(val)\n      }\n\n      return undefined\n    },\n\n    capitalize(v: string) {\n      return Locale.capitalize(v)\n    },\n  },\n\n  methods: {\n    isSet(val: any): boolean {\n      return Util.isSet(val)\n    },\n\n    capitalize(v: string) {\n      return Locale.capitalize(v)\n    },\n\n    isEmptyObject(obj: any): boolean {\n      return Util.isEmptyObject(obj)\n    },\n\n    notEmptyObject(obj: any): boolean {\n      return Util.notEmptyObject(obj)\n    },\n\n    isNonEmptyArray(arr: any): boolean {\n      return Util.isNonEmptyArray(arr)\n    },\n\n    isNonEmptyText(text: any): boolean {\n      return Util.isNonEmptyText(text)\n    },\n\n    dateTimeFormat(val: string): string | undefined {\n      if (Util.isSet(val)) {\n        return Locale.dateTimeFormat(val)\n      }\n\n      return undefined\n    },\n\n    deepClone(obj: any) {\n      return Util.deepClone(obj)\n    },\n\n    isInt(possibleInt: any): boolean {\n      return !isNaN(parseInt(possibleInt))\n    },\n\n    isFloat(possibleFloat: any): boolean {\n      return !isNaN(parseFloat(possibleFloat))\n    },\n  },\n})","import _actionDialogMixin from \"./actiondialogmixin\"\nimport _actionMixin from \"./actionmixin\"\nimport _controlMixin from \"./controlmixin\"\nimport _dataTableServerSideMixin from \"./dataTableServerSideMixin\"\nimport _doubleClickMixin from \"./doubleclickmixin\"\nimport _selectMixin from \"./selectmixin\"\nimport _textMixin from \"./textmixin\"\n\nexport const actionDialogMixin = _actionDialogMixin\nexport const actionMixin = _actionMixin\nexport const controlMixin = _controlMixin\nexport const dataTableServerSideMixin = _dataTableServerSideMixin\nexport const doubleClickMixin = _doubleClickMixin\nexport const selectMixin = _selectMixin\nexport const textMixin = _textMixin\n","import {\n  ResellerUser as ResellerUserType,\n} from \"@/types\"\n\nexport type DeleteUserCommand = {\n  login: string,\n}\n\nexport type DeleteUserResponse = {\n  success: boolean,\n}\n\nexport type GetUserCommand = {\n  login: string,\n}\n\nexport interface ResellerUserDataPayload extends ResellerUserType {\n  cmd: \"create\" | \"edit\",\n  pwd2?: string,\n}\n\nexport interface SaveUserResponse {\n  success: boolean\n  msg?: string\n}\n\nexport default {\n  getUser(command: GetUserCommand): Promise<ResellerUserType> {\n    return new Promise((resolve, reject) => {\n      return window.resellerServerFuncs\n        .getUser(command)\n        .then((response: any) => resolve(response))\n        .catch((error: any) => reject(error))\n    })\n  },\n\n  saveUser(payload: ResellerUserDataPayload): Promise<SaveUserResponse> {\n    return new Promise((resolve, reject) => {\n      return window.resellerServerFuncs\n        .saveUser(payload)\n        .then((response: any) => resolve(response))\n        .catch((error: any) => reject(error))\n    })\n  },\n\n  deleteUser(login: string): Promise<DeleteUserResponse> {\n    return new Promise((resolve, reject) => {\n      const command: DeleteUserCommand = {\n        login: login,\n      }\n\n      return window.resellerServerFuncs\n        .deleteUser(command)\n        .then((response: any) => resolve(response))\n        .catch((err: any) => reject(err))\n    })\n  },\n\n  listUsers(): Promise<ResellerUserType[]> {\n    const list: ResellerUserType[] = []\n    return new Promise((resolve, reject) => {\n      window.resellerServerFuncs\n        .listUsers()\n        .then((response: any) => {\n          if (Array.isArray(response)) {\n            list.push(...response)\n          }\n        })\n        .catch((error: any) => reject(error))\n        .done(() => resolve(list))\n    })\n  },\n}","import { defineComponent } from \"vue\"\n\nimport Util from \"@/modules/utils/util\"\nimport Debouncer, { DebouncerType } from \"@/modules/utils/debounce\"\nimport Locale from \"@/modules/utils/locales\"\n\nimport Session, {\n  AuthTypeOrRedirectResponse,\n  LoginLogoutResponse,\n} from \"@/modules/managers/session\"\n\nimport { RuleCallback, Rule } from \"@/types\"\n\nimport BuildInfo from \"@/modules/injected-js-handlers/buildInfo\"\n\nimport {\n  LoggedOutContent,\n} from \"@/components\"\n\ninterface State {\n  pageLoading: boolean,\n  showTestInfo: boolean,\n  reseller: string | undefined,\n  login: string | undefined,\n  password: string | undefined,\n  error_msg: string | null,\n  loggingIn: boolean,\n  inputRules: RuleCallback[],\n  savedResellers: string[],\n  currentStep: number,\n\n  debouncer: DebouncerType,\n}\n\nexport default defineComponent({\n  name: \"LoginPage\",\n\n  components: {\n    LoggedOutContent,\n  },\n\n  data: (): State => ({\n    pageLoading: true,\n    showTestInfo: false,\n    reseller: undefined,\n    login: undefined,\n    password: undefined,\n    error_msg: null,\n    loggingIn: false,\n    inputRules: [ (v: any): Rule => !!v || \"Required\" ],\n    savedResellers: [],\n    currentStep: 1,\n\n    debouncer: new Debouncer(100),\n  }),\n\n  computed: {\n    oneResellerOnlyValue(): string | undefined {\n      // @ts-ignore\n      return window?.__one_reseller_only\n    },\n\n    oneResellerOnly(): boolean {\n      return Util.isSet(this.oneResellerOnlyValue)\n    },\n\n    isTestMode(): boolean {\n      return BuildInfo.isTestMode()\n    },\n\n    siteName(): string | undefined {\n      return BuildInfo.siteName()\n    },\n\n    versionNumber(): string | undefined {\n      return BuildInfo.versionNumber()\n    },\n\n    buildNumber(): string | undefined {\n      return BuildInfo.buildNumber()\n    },\n\n    backendName(): string | undefined {\n      return BuildInfo.backendName()\n    },\n  },\n\n  created() {\n    this.onLoad()\n  },\n\n  methods: {\n    onLoad() {\n      const handleError = (errorMsg: string): void => {\n        this.error_msg = errorMsg\n\n        if (!this.oneResellerOnly) {\n          this.currentStep = 1\n        }\n\n        this.pageLoading = false\n      }\n\n      const handleForceReseller = (forceReseller: string): void => {\n        this.reseller = forceReseller\n        this.checkResellerAuthType(forceReseller)\n      }\n\n      const handleOneResellerOnly = (): void => {\n        this.reseller = this.oneResellerOnlyValue\n\n        if (forceUserPass) {\n          this.forceUserPass()\n        } else if (this.oneResellerOnlyValue) {\n          this.checkResellerAuthType(this.oneResellerOnlyValue)\n        }\n      }\n\n      const applyReseller = (reseller: string): void => {\n        this.reseller = reseller\n      }\n\n      const getSavedResellers = (): string[] => {\n        try {\n          const savedResellers = JSON.parse(\n            (localStorage.getItem(\"resellersArray\") as string)\n          )\n\n          return (savedResellers as string[])\n        }\n        catch {\n          return []\n        }\n      }\n\n      const getResellerFromSaved = (): void => {\n        try {\n          const savedResellers = getSavedResellers()\n          if (savedResellers.length > 0) {\n            this.reseller = savedResellers[0]\n          }\n        }\n        // eslint-disable-next-line no-unused-vars\n        catch (e) {\n          /* Don't need to do anything */\n        }\n      }\n\n      const handleNormalCase = (): void => {\n        if (Util.isSet(reseller)) {\n          applyReseller(reseller)\n        } else {\n          getResellerFromSaved()\n        }\n\n        this.pageLoading = false\n      }\n\n      const continueControlFlow = (): void => {\n        if (Util.isSet(forceReseller)) {\n          handleForceReseller(forceReseller)\n        } else if (this.oneResellerOnly) {\n          handleOneResellerOnly()\n        } else {\n          handleNormalCase()\n        }\n      }\n\n      this.savedResellers = getSavedResellers()\n\n      const params = new URLSearchParams(window.location.search)\n\n      const reseller = params.get(\"reseller\")\n      const forceReseller = params.get(\"forcereseller\")\n      const forceUserPass = params.get(\"forceuserpass\") === \"true\"\n      const errorMsg = params.get(\"error\")\n\n      if (errorMsg) {\n        handleError(errorMsg)\n      } else {\n        continueControlFlow()\n      }\n    },\n\n    saveAndGetUniqueResellers() {\n      if (!this.reseller) return\n\n      const previousResellersCombined = (this.savedResellers || [])\n        .concat([ this.reseller ])\n      const unique = Array.of(...new Set(previousResellersCombined))\n        .filter((r: string | undefined) => Util.isSet(r))\n\n      /* Save reseller for future */\n      this.savedResellers = unique\n\n      // Limit to max 10 saved resellers\n      while (this.savedResellers.length > 10) {\n        this.savedResellers.pop()\n      }\n      // Save in local storage for next time\n      localStorage.setItem(\n        \"resellersArray\",\n        JSON.stringify(this.savedResellers)\n      )\n      return unique\n    },\n\n    doLogin() {\n      const preProcessData = (): void => {\n        this.saveAndGetUniqueResellers()\n      }\n\n      const handleResponse = (res: LoginLogoutResponse): void => {\n        if (res.succeeded) {\n          this.error_msg = null\n          window.location.reload()\n        } else {\n          this.error_msg = \"Login failed\"\n          this.currentStep = 1\n        }\n        this.loggingIn = false\n      }\n\n      const handleFailure = (err: string): void => {\n        this.currentStep = 1\n        this.error_msg = err\n        this.loggingIn = false\n      }\n\n      if (Util.isSet(this.reseller)) {\n        preProcessData()\n        this.loggingIn = true\n\n        /* Do the login */\n        Session.login(this.reseller, (this.login as string), (this.password as string))\n          .then(handleResponse)\n          .catch(handleFailure)\n      }\n    },\n\n    forceUserPass() {\n      if (Util.isSet(this.reseller)) {\n        this.pageLoading = false\n        this.currentStep = 2\n      }\n    },\n\n    debounceResellerInput(val: string) {\n      this.debouncer.debounce(() => (this.reseller = val))\n    },\n\n    checkResellerAuthType(codeName: string) {\n      this.pageLoading = true\n\n      const handleResponse = (res: AuthTypeOrRedirectResponse): void => {\n        if (res.authType === \"OpenIDConnect\") {\n          if (res.OK) {\n            this.reseller = codeName\n            this.saveAndGetUniqueResellers()\n\n            window.location.href = (res.redirectUri as string)\n          } else {\n            goToUsernamePasswordPage()\n          }\n        } else {\n          goToUsernamePasswordPage()\n        }\n      }\n\n      const goToUsernamePasswordPage = (): void => {\n        this.pageLoading = false\n        this.currentStep = 2\n      }\n\n      const handleFailure = (err: string): void => {\n        this.currentStep = 1\n        this.pageLoading = false\n        this.error_msg = err\n      }\n\n      Session.checkAuthTypeOrRedirect(codeName)\n        .then(res => handleResponse(res))\n        .catch(err => handleFailure(err))\n    },\n\n    _(msg: string): string {\n      return Locale.translate(msg)\n    },\n\n    isSet(v: any): boolean {\n      return Util.isSet(v)\n    },\n  },\n})","import mod from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!./login.ts?vue&type=script&lang=ts&external\"; export default mod; export * from \"-!../../../../../../node_modules/ts-loader/index.js??clonedRuleSet-1.use[0]!./login.ts?vue&type=script&lang=ts&external\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=0bcb42bc\"\nimport script from \"@/views/login/login.ts?vue&type=script&lang=ts&external\"\nexport * from \"@/views/login/login.ts?vue&type=script&lang=ts&external\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=0bcb42bc&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 { VAlert } from 'vuetify/lib/components/VAlert';\nimport { VApp } from 'vuetify/lib/components/VApp';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCombobox } from 'vuetify/lib/components/VCombobox';\nimport { VFlex } from 'vuetify/lib/components/VGrid';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VLayout } from 'vuetify/lib/components/VGrid';\nimport { VProgressCircular } from 'vuetify/lib/components/VProgressCircular';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VStepper } from 'vuetify/lib/components/VStepper';\nimport { VStepperContent } from 'vuetify/lib/components/VStepper';\nimport { VStepperItems } from 'vuetify/lib/components/VStepper';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VApp,[_c('LoggedOutContent',[_c(VLayout,{staticClass:\"login-page\",attrs:{\"align-center\":\"\",\"justify-center\":\"\",\"id\":\"login\"}},[_c(VFlex,{attrs:{\"xs10\":\"\",\"sm6\":\"\"}},[_c(VAlert,{attrs:{\"value\":!!_vm.error_msg,\"data-test-id\":\"error-banner\",\"type\":\"error\"}},[_vm._v(\"\\n          \"+_vm._s(_vm.error_msg)+\"\\n        \")]),_vm._v(\" \"),_c('div',{staticClass:\"logo-wrapper\"},[_c(VImg,{staticClass:\"logo\",attrs:{\"contain\":\"\",\"data-test-id\":\"logo\",\"src\":\"/public/assets/images/logo-partnerportal.svg\"}}),_vm._v(\" \"),(_vm.isTestMode)?_c('span',{attrs:{\"data-test-id\":\"test-env-banner\"}},[_c('div',{staticClass:\"environment-wrapper\",attrs:{\"data-test-id\":\"env-banner-button\"},on:{\"click\":function($event){_vm.showTestInfo = !_vm.showTestInfo}}},[_c('span',{staticClass:\"environment-badge\"},[_vm._v(\"\\n                \"+_vm._s(_vm._('Test_environment'))+\"\\n                \"),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.showTestInfo),expression:\"!showTestInfo\"}],staticClass:\"mdi mdi-menu-down\"}),_vm._v(\" \"),_c('i',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTestInfo),expression:\"showTestInfo\"}],staticClass:\"mdi mdi-menu-up\"})]),_vm._v(\" \"),_c('span',{staticClass:\"site-info ribbon-content\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.showTestInfo),expression:\"showTestInfo\"}],staticClass:\"test-info-wrapper\"},[_c('table',[_c('tbody',[_c('tr',[_c('td',[_vm._v(\"\\n                          Site\\n                        \")]),_vm._v(\" \"),_c('td',[_c('span',{attrs:{\"data-test-id\":\"site-name\"}},[_vm._v(_vm._s(_vm.siteName))])])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(\"\\n                          Version\\n                        \")]),_vm._v(\" \"),_c('td',[_c('span',{attrs:{\"data-test-id\":\"version-number\"}},[_vm._v(_vm._s(_vm.versionNumber))])])]),_vm._v(\" \"),_c('tr',[_c('td',[_vm._v(\"\\n                          Build\\n                        \")]),_vm._v(\" \"),_c('td',[_c('span',{attrs:{\"data-test-id\":\"build-number\"}},[_vm._v(_vm._s(_vm.buildNumber))])])]),_vm._v(\" \"),(_vm.backendName !== '')?_c('span',[_c('tr',[_c('td',[_vm._v(\"\\n                            Backend\\n                          \")]),_vm._v(\" \"),_c('td',[_c('span',{attrs:{\"data-test-id\":\"backend-name\"}},[_vm._v(_vm._s(_vm.backendName))])])])]):_vm._e()])])])])])]):_vm._e()],1),_vm._v(\" \"),_c(VCard,{staticClass:\"login-card pa-4\",attrs:{\"flat\":\"\"}},[_c(VCardText,[(!_vm.oneResellerOnly)?_c('h2',[_vm._v(\"\\n              Login\\n            \")]):_vm._e(),_vm._v(\" \"),(_vm.oneResellerOnly && !!_vm.error_msg)?_c('div',[_c('div',{staticClass:\"button-wrapper justify-center\"},[(_vm.oneResellerOnlyValue)?_c(VBtn,{staticClass:\"btn-login\",attrs:{\"loading\":_vm.pageLoading,\"depressed\":\"\",\"color\":\"white--text\",\"data-test-id\":\"next-btn\"},on:{\"click\":function($event){return _vm.checkResellerAuthType(_vm.oneResellerOnlyValue)}}},[_vm._v(\"\\n                  Try again\\n                \")]):_vm._e()],1)]):_vm._e(),_vm._v(\" \"),(_vm.oneResellerOnly && _vm.pageLoading && !_vm.error_msg)?_c('div',{staticClass:\"d-flex align-center justify-center\"},[_c(VProgressCircular,{attrs:{\"indeterminate\":\"\",\"size\":\"32\",\"width\":\"2\"}})],1):_vm._e(),_vm._v(\" \"),_c(VForm,{ref:\"loginForm\",attrs:{\"role\":\"form\"},on:{\"submit\":function($event){$event.preventDefault();return _vm.doLogin.apply(null, arguments)}}},[_c('div',[_c(VStepper,{attrs:{\"flat\":\"\"},model:{value:(_vm.currentStep),callback:function ($$v) {_vm.currentStep=$$v},expression:\"currentStep\"}},[_c(VStepperItems,[(!_vm.oneResellerOnly)?_c(VStepperContent,{attrs:{\"step\":\"1\"}},[_c(VCombobox,{staticClass:\"login-field\",attrs:{\"value\":_vm.reseller,\"items\":_vm.savedResellers,\"placeholder\":_vm._('Login_page_login_company'),\"outlined\":\"\",\"hide-details\":\"\",\"persistent-placeholder\":\"\",\"id\":\"reseller\",\"data-test-id\":\"reseller\",\"label\":\"Reseller\"},on:{\"update:search-input\":_vm.debounceResellerInput}}),_vm._v(\" \"),_c(VSpacer),_vm._v(\" \"),_c('div',{staticClass:\"button-wrapper\"},[_c(VSpacer),_vm._v(\" \"),(_vm.reseller)?_c(VBtn,{staticClass:\"btn-login\",class:{ 'disabled-color': _vm.pageLoading },attrs:{\"loading\":_vm.pageLoading,\"disabled\":!_vm.isSet(_vm.reseller),\"depressed\":\"\",\"color\":\"white--text\",\"data-test-id\":\"next-btn\"},on:{\"click\":function($event){return _vm.checkResellerAuthType(_vm.reseller)}}},[_vm._v(\"\\n                          Next\\n                        \")]):_vm._e()],1),_vm._v(\" \"),_c('div',{staticClass:\"d-flex align-center justify-center pt-4\"},[_c('span',{staticClass:\"text-caption noselect\",class:{\n                            'grey--text': !_vm.isSet(_vm.reseller),\n                            'primary--text cursor-pointer': _vm.isSet(_vm.reseller),\n                          },on:{\"click\":_vm.forceUserPass}},[_vm._v(\"\\n                          \"+_vm._s(_vm._(\"Login_with_username\"))+\"\\n                        \")])])],1):_vm._e(),_vm._v(\" \"),_c(VStepperContent,{attrs:{\"step\":\"2\"}},[_c(VTextField,{staticClass:\"login-field\",attrs:{\"value\":_vm.reseller,\"rules\":_vm.inputRules,\"outlined\":\"\",\"disabled\":\"\",\"label\":\"Reseller\"}}),_vm._v(\" \"),_c(VTextField,{staticClass:\"login-field\",attrs:{\"rules\":_vm.inputRules,\"label\":_vm._('Username'),\"required\":\"\",\"outlined\":\"\",\"placeholder\":\"Enter username\",\"data-test-id\":\"username\"},model:{value:(_vm.login),callback:function ($$v) {_vm.login=$$v},expression:\"login\"}}),_vm._v(\" \"),_c(VTextField,{staticClass:\"login-field\",attrs:{\"rules\":_vm.inputRules,\"required\":\"\",\"outlined\":\"\",\"id\":\"password\",\"type\":\"password\",\"data-test-id\":\"password\",\"placeholder\":\"Enter password\",\"label\":\"Password\"},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}),_vm._v(\" \"),_c('div',{staticClass:\"button-wrapper\"},[_c(VCardActions,{staticClass:\"login\"},[(!_vm.oneResellerOnly)?_c(VBtn,{staticClass:\"btn-back\",attrs:{\"depressed\":\"\",\"data-test-id\":\"back-btn\"},on:{\"click\":function($event){_vm.currentStep = 1}}},[_vm._v(\"\\n                            Back\\n                          \")]):_vm._e(),_vm._v(\" \"),_c(VBtn,{staticClass:\"btn-login\",attrs:{\"disabled\":!_vm.isSet(_vm.reseller) ||\n                                !_vm.isSet(_vm.login) ||\n                                !_vm.isSet(_vm.password),\"loading\":_vm.loggingIn,\"depressed\":\"\",\"type\":\"submit\",\"data-test-id\":\"login\",\"color\":\"white--text\"}},[_c('span',[_vm._v(_vm._s(_vm._(\"Login\")))])])],1)],1)],1)],1)],1)],1)])],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { createNewInstance } from \"@/app\"\nimport { CreateElement } from \"vue\"\n\nimport Login from \"@/views/login/Login.vue\"\n\ncreateNewInstance({\n  name: \"LoginPage\",\n  render: (h: CreateElement) => h(Login),\n  components: {\n    Login,\n  },\n}, \"#page\")\n"],"names":["___CSS_LOADER_EXPORT___","push","module","id","content","__esModule","default","locals","exports","add","use","component","opts","icons","iconfont","values","theme","options","customProperties","dark","themes","light","primary","secondary","accent","warning","black","grey","progress","success","error","activated","disabled","badgeRedBg","badgeRedText","badgeGreenBg","badgeGreenText","border","borderLight","title","byline","background","backgroundLight","backgroundDark","backgroundTableHeader","dialogBg","dialogBgInner","inputBg","ctaInverted","ctaLight","flowImportBg","flowImportBorder","flowImportText","flowExportBg","flowExportBorder","flowExportText","globalNotification","globalNotificationBg","navPrimary","navBg","logoTitle","positiveAmount","negativeAmount","state","mini","SidebarStore","namespaced","mutations","SET_MINI","val","actions","changeMini","commit","getters","ls","window","sessionStorage","modules","sidebar","plugins","storage","getItem","key","setItem","value","removeItem","store","MixinImpl","methods","_","msg","translate","__","textId","arr","extend","async","createNewInstance","data","mountEl","lang","language","res","fetch","json","setLocale","countries","currencies","languages","texts","timezones","fetchLocale","pinia","vuetify","$mount","mixin","_vm","this","_c","_self","_setupProxy","VDialog","attrs","maxWidth","model","callback","$$v","dialog","expression","VCard","staticClass","class","customClass","$attrs","_t","_v","_s","description","$scopedSlots","_e","buttons","VBtn","on","close","dataTestId","VSelect","_b","items","rules","itemValue","itemText","contentProps","scopedSlots","_u","fn","item","VListItem","_g","getValue","$event","$emit","VList","getText","VAutocomplete","VTooltip","direction","openDelay","activator","text","String","renderKey","noActions","VMenu","copyButtonClass","preventDefault","apply","arguments","VIcon","copyNodeToClipboard","nodeKey","parentIsArray","isEditable","toggleFold","isArray","isFolded","nodeSize","isPrimitive","isStructural","valueTypeClass","formattedValue","inputError","_l","childValue","childKey","index","isLastIndex","nodeValue","level","expandedOnStart","handleChildChange","isLast","readonly","VCol","VTextarea","jsonAsString","parsedJson","jsonRule","updateJsonManually","handleNodeChange","useDialog","Dialog","updateZIndex","name","components","DraggableDialog","PbTooltip","inheritAttrs","props","helpIsAvailable","type","Boolean","helpActive","header","extraClass","withFooter","isOpen","draggableEnabled","hideHeader","persistent","noClose","noSave","saveText","closeText","automaticLoadAtSave","showDataView","dataViewIsDisabled","disableSave","withConfirm","confirmOptions","Object","disableTooltipText","helpIsActive","helpIsExpanded","currentlyOpen","loading","x","y","grabbing","computed","contentClass","classes","classNames","join","isSet","watch","handler","open","checkZIndex","stopLoading","save","openConfirmDialog","then","bool","openDataView","clickOutside","showContextMenu","e","showMenu","clientX","clientY","$nextTick","waitForRender","handleZIndex","ref","indexOf","_k","keyCode","domProps","VSpacer","staticStyle","directives","rawName","VNavigationDrawer","copyToClipboard","payload","label","createCustomData","customDataIsSet","objectKeys","copy","moduleId","CustomDataTypes","JSON","getContents","length","editCustomData","deleteCustomData","activeCustomDataIsValid","activeCustomData","saveCustomData","VForm","VTextField","DefaultValidators","required","availableCustomDataTypes","VCheckbox","openBaseDialog","closeBaseDialog","startLoading","BaseDialog","CopyToClipboardBtn","JsonViewer","filters","capitalizeAndSplitWords","split","map","word","toUpperCase","slice","toLowerCase","mixins","onlyCustomData","hideCustomData","attach","overrideMaxWidth","timeout","activeIndex","openJsonPanels","activeItem","activeItemCustomData","getId","currentId","Array","findIndex","localId","forEach","deepClone","findAllCustomData","isNonEmptyArray","recursiveHelper","obj","parentPath","entries","entry","isObject","visited","filter","o","key1","notEmptyObject","keys","includes","parse","syntaxHighlight","stringify","undefined","replace","match","cls","test","VRow","_f","created","lastModified","lastModifiedBy","VExpansionPanels","VExpansionPanel","VExpansionPanelHeader","VExpansionPanelContent","placeholder","persistentPlaceholder","computedMenuProps","computedRules","validateError","validateRules","multiple","dense","outlined","prependInnerIcon","twoLines","customitem","computedItemValue","customselection","loggingOut","logout","active","href","proxy","cancel","_delete","saveEnabled","confirm","confirmText","copyText","VProgressLinear","VSwitch","isSuperUser","setSuperUser","isViewOnlyActivated","setViewOnly","group","groupName","groups","permission","perm","pIndex","isPermissionActive","changePermission","getPermissionText","VMain","pushright","globalnotification","isNonEmptyText","globalNotice","VAppBar","isDarkMode","hasStatsPerm","tenantsWithIssuesCount","toggleTheme","VAvatar","fullName","email","VDivider","siteName","versionNumber","buildNumber","backendName","drawer","VListItemAction","VBadge","stopPropagation","conn","VImg","getConnectorUrlLogo","getActivePlugs","plug","i","plugClass","sourceSystems","_m","VOverflowBtn","disableSelect","getSystems","closeOnContentClick","getConnectorName","missingOpts","isGroupActive","allowMultiple","single","systems","system","chip","showDisabled","tenantCountry","showSieSpecialSetting","resellerHasOption","ruleTag","hasOption","showZettleSpecialSetting","showStripeSpecialSetting","opt","isChecked","disabledOptions","headerTitle","onlyShowSelectedGroups","search","searching","debounceSearch","disabledOpts","checkAll","isAllChecked","isEmptyObject","shownGroupedOptions","getTitle","isGroupChecked","selectedOptions","every","checkGroup","withHeaders","getGeneralOpts","checkItem","getImportOpts","getExportOpts","dateTime","disableInput","date","debounceDate","menu","VDatePicker","isDateAllowed","setValueAndClose","showTime","time","withClear","clear","withReset","reset","rangeItemsDef","shortText","VListItemGroup","rangeItem","changeItem","handleTextChange","exactDate","tempExact","tempFrom","tempTo","filterBtnIsValid","doFilter","openDialog","from","to","formatLocalDate","exact","clearFilter","VDataTable","def","cssClasses","headers","windowY","computedTotalCount","dataOptions","hideDefaultFooter","getFilterItems","updateFilterSelect","searchable","headerType","updateFilter","VSkeletonLoader","chartType","updateChartType","chartId","onHover","onLeave","color","toggleActive","image","fallbackSrc","fallbackImage","count","change","positiveNumber","getImage","end","changePercentage","percentage","getActive","noDataText","tenantCount","positive","negative","statsSortOptions","icon","editReselleruserDlg","VLayout","VFlex","saveIsEnabled","saveUser","command","minLength","correctLoginFormat","reselleruserData","$set","isEmail","pwd","pwdRules","pwd2","pwd2Rules","isMyself","resellerPerms","permissions","perms","EditTypeEnum","User","list","gIndex","showSourceType","sourceType","allowedSourceTypeOptions","selectedSourceType","visibleDestinationTypeOptions","destinationType","selectedDestinationType","leftSideActive","destinationSystems","plugs","hasPerm","showSaveAs","saveNameValid","saveName","templateNameIsValid","Mode","Command","DefaultTenantSizeCost","EditCustomData","AssistantSystemSelectWrapper","CheckboxList","PbSelect","TenantCreateConfirmDialog","SalesFlow","CoreSelect","CoreAutocomplete","DataViewDialog","basedialogmixin","isTemplate","selectedMode","welcome","create","tenantData","tempCustomData","tenantDefaultWL","defaultWhiteLabel","tenantOptions","allowableTenantOptions","sort","availableAssistants","templates","paymentOptions","connectors","ConnectorOptions","allConnectorsMap","tenantSizes","tenantSize","customShardCost","headerText","isCreate","codeNameSettable","currentSetupIsTemplate","some","c","checkIfTrue","template","option","usesTemplate","tenantTemplate","sortedConnectors","a","b","localeCompare","defaultCountryList","sortOrder","country","code2","isAdmin","isEdit","edit","onlyTenant","showTenantCostSetting","isDetailedMode","hasTenantSetCostPerm","detailed","isDefaultMode","isWelcomeMode","timeZones","allTimeZones","allCountries","validAssistantLanguages","allLanguages","customSort","code3","capitalize","mapToLangItem","allLanguagesMap","hasAssistants","assistant","definition","getAssistantDefinition","code","rootOptions","getRootOptions","getGroups","A","getOpts","of","Set","assistants","allFieldsAreFilledInCorrectly","codeName","customerReference","isCodeNameFilledIn","defaultLanguage","tenantHasAllRequiredOptsForAssistant","visibleAvailableAssistants","deep","defaultCountry","defaultTimeZone","whiteLabel","$forceUpdate","$refs","form","validate","mounted","resetValues","ass","fetchTemplates","updateCustomData","customData","dlg","isTenantPayload","isTenantTemplateType","isTenantCommon","addConnector","typeCode","connectorOptions","perConnector","typeCodeOptions","maxConnections","systemsFromOptions","leftSideColumn","rightSideColumn","applyTemplate","templateLocalId","find","t","assCode","comp","selectAssistant","reducedTemplate","reduce","withAssistants","getThumbnailURL","toUrl","visibleSystemThumbnails","addAssistant","assistantDef","assistantCanBeAdded","parameters","updateOptions","fulfillsOptions","requiredOptions","holder","doesNotFulfillOptions","originalHolder","notFulfilled","helperFunc","addToList","optionHolder","children","childHolder","condition","body","r","child","tenantOption","singleChoices","g","s","l","lo","getAssistantName","optsMissing","concat","optsPreventingAssistantFromBeingAdded","fullfilled","createTenant","sortOptions","timeZone","hasUiTenantDetailedPerm","hasTenantTemplateViewPerm","editTenant","getTenantByCodeName","createTemplateFromTenantSetup","newTemplate","createTenantTemplate","openSuccessDialog","catch","err","openErrorDialog","createTemplate","editTenantTemplate","getTenantTemplate","shardCost","ts","saveTenant","valid","hasErrors","getErrors","result","tenantCreateConfirmDialog","cmd","saveAsTemplateName","fail","saveTenantTemplate","fut","OK","updateTenantDataSalesFlow","newTenantData","newOptions","listTenantTemplates","changeGroupSelection","newOpts","addOptsOrRemove","optList","newList","setDefault","setDetailed","v","addComment","comment","comments","getAssistantParameters","changeParameterValue","fieldName","translateChannel","translateParameterValue","tIndex","iconObj","iconIndex","inactive","connector","splice","defaultValue","Tenant","editUserDlg","mailUser","userData","userPermissions","antiPermissions","currentLanguage","availableLanguages","changeLanguage","emojiCode","flagCode","VApp","VContainer","fluid","hasTenantViewPerm","hasTenantCreatePerm","hasTenantEditPerm","hasTenantDeletePerm","hasTenantLoginAsPerm","hasTenantLoginAsAnyUserPerm","hasTenantUserAdmPerm","hasResellerUserViewPerm","hasResellerUserCreatePerm","hasResellerUserEditPerm","hasResellerUserDeletePerm","hasConnectorCredentialsEditPerm","hasTenantTemplateCreatePerm","hasTenantTemplateEditPerm","hasTenantTemplateDeletePerm","hasAllowableTenantOption","hasAnyPerm","promise","resolve","reject","superOpen","Promise","rej","superReset","_getThis","$root","head","app","loggedin","openDeleteDialog","withoutConfirm","openLoadingDialog","optionalTitle","estimatedProgress","closeLoadingDialog","openInfoDialog","reload","getDataTable","table","getDataTableQuery","getQueryHandler","queryBuilder","getQuery","getDataTableQueryHandler","editable","doubleClickHandler","clickedInTimeout","doDoubleClick","isString","setTimeout","clearTimeout","badge","inputRules","shouldShowBadge","messages","rule","dateTimeFormat","isInt","possibleInt","isNaN","parseInt","isFloat","possibleFloat","parseFloat","controlMixin","doubleClickMixin","selectMixin","textMixin","getUser","resellerServerFuncs","response","deleteUser","login","listUsers","done","LoggedOutContent","pageLoading","showTestInfo","reseller","password","error_msg","loggingIn","savedResellers","currentStep","debouncer","oneResellerOnlyValue","__one_reseller_only","oneResellerOnly","isTestMode","onLoad","handleError","errorMsg","handleForceReseller","forceReseller","checkResellerAuthType","handleOneResellerOnly","forceUserPass","applyReseller","getSavedResellers","localStorage","getResellerFromSaved","handleNormalCase","continueControlFlow","params","URLSearchParams","location","get","saveAndGetUniqueResellers","previousResellersCombined","unique","pop","doLogin","preProcessData","handleResponse","succeeded","handleFailure","debounceResellerInput","debounce","authType","redirectUri","goToUsernamePasswordPage","checkAuthTypeOrRedirect","VAlert","VProgressCircular","VStepper","VStepperContent","VCombobox","render","h","Login"],"sourceRoot":""}